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 从列表中取第一个,所以在你的情况下它应该没问题。