Selenium:无法在 GWT App 中找到元素
Selenium: unable to find a element in GWT App
我需要从 GWT 应用程序中的元素获取 text/value。可以在此处找到该应用程序和元素:
-打开http://www.festo.com/cat/en-us_us/products
-点击"Products"
-点击"Software"
-点击"Rotary indexing table"
-点击"Next"
-点击"Next"*
现在您在页面“3.加载设置”
-输入 50 (kg cm²) 作为转动惯量
-输入 50(kg)作为质量
-输入 50 (mm) 作为 r for as Distance/Lever arm
-输入 50 (deg) 作为希腊字母 theta
-输入 50 (mm) 作为 Z
-点击下一步"Next"
现在您在“4.结果”页面上
在这里您可以看到 "C: total cycle time"(和其他结果)的结果,对于之前在页面上输入的值,这将是 0.518 秒。
我可以使用 selenium(在 perl 中)自动完成所有这些操作,直到我到达第 4 页,在这里我无法获取结果。谁能给我建议该怎么做?我想这不是 perl 的问题。
如果我使用 FireBug 获取更多详细信息,我也无法在 HTML 选项卡中找到结果值“0.518”。如果我切换到 FireBug 的 DOM 选项卡,我就能找到它。
感谢
罗兰
您可以尝试通过 [ctrl + a] 将输入元素的文本复制到剪贴板,然后读取剪贴板,这可能是一种解决方法。
确保您正确定位了您的输入元素!
WebElement inputElement = driver.findElement(inputLocator);
//copy all text inside input element
inputElement.sendKeys(Keys.chord(Keys.CONTROL, "a"));
//now read the clipboard
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
System.out.println(clipboard.getData(DataFlavor.stringFlavor));
GWT 使用 iframe - 这对 Selenium 测试不友好。
您的元素包含在此 iframe 中:CamosIFramecamosFSV22E4A4C1E_EDC0_768B_CC78_8BA85ABADCCD
您需要先切换到 iframe,例如:
driver.switchTo().frame("Your-frame-id");
当动态生成帧时(这里可能就是这种情况),您可以尝试传递索引。
当您在正确的框架上时,您可以尝试使用 css class 找到您的元素:input.GM53QT1CF
- 但正如我所见,它选择了页面上的所有输入字段. Selenium 从列表中取第一个,所以在你的情况下它应该没问题。
我需要从 GWT 应用程序中的元素获取 text/value。可以在此处找到该应用程序和元素:
-打开http://www.festo.com/cat/en-us_us/products
-点击"Products"
-点击"Software"
-点击"Rotary indexing table"
-点击"Next"
-点击"Next"*
现在您在页面“3.加载设置”
-输入 50 (kg cm²) 作为转动惯量
-输入 50(kg)作为质量
-输入 50 (mm) 作为 r for as Distance/Lever arm
-输入 50 (deg) 作为希腊字母 theta
-输入 50 (mm) 作为 Z
-点击下一步"Next"
现在您在“4.结果”页面上
在这里您可以看到 "C: total cycle time"(和其他结果)的结果,对于之前在页面上输入的值,这将是 0.518 秒。
我可以使用 selenium(在 perl 中)自动完成所有这些操作,直到我到达第 4 页,在这里我无法获取结果。谁能给我建议该怎么做?我想这不是 perl 的问题。
如果我使用 FireBug 获取更多详细信息,我也无法在 HTML 选项卡中找到结果值“0.518”。如果我切换到 FireBug 的 DOM 选项卡,我就能找到它。
感谢
罗兰
您可以尝试通过 [ctrl + a] 将输入元素的文本复制到剪贴板,然后读取剪贴板,这可能是一种解决方法。
确保您正确定位了您的输入元素!
WebElement inputElement = driver.findElement(inputLocator);
//copy all text inside input element
inputElement.sendKeys(Keys.chord(Keys.CONTROL, "a"));
//now read the clipboard
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
System.out.println(clipboard.getData(DataFlavor.stringFlavor));
GWT 使用 iframe - 这对 Selenium 测试不友好。
您的元素包含在此 iframe 中:CamosIFramecamosFSV22E4A4C1E_EDC0_768B_CC78_8BA85ABADCCD
您需要先切换到 iframe,例如:
driver.switchTo().frame("Your-frame-id");
当动态生成帧时(这里可能就是这种情况),您可以尝试传递索引。
当您在正确的框架上时,您可以尝试使用 css class 找到您的元素:input.GM53QT1CF
- 但正如我所见,它选择了页面上的所有输入字段. Selenium 从列表中取第一个,所以在你的情况下它应该没问题。