Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Selenium:在GWT应用程序中找不到元素_Javascript_Perl_Dom_Selenium_Gwt - Fatal编程技术网

Javascript Selenium:在GWT应用程序中找不到元素

Javascript Selenium:在GWT应用程序中找不到元素,javascript,perl,dom,selenium,gwt,Javascript,Perl,Dom,Selenium,Gwt,我需要从GWT应用程序中的元素获取文本/值。可以在以下位置找到应用程序和元素: -打开 -点击“产品” -点击“软件” -点击“旋转索引表” -点击“下一步” -点击“下一步”* 现在您已进入“3.加载设置”页面 -输入50(kg cm²)作为质量惯性矩 -输入50(kg)作为质量 -输入50(mm)作为r作为距离/杆臂 -输入50(度)作为希腊字母θ -输入50(mm)作为Z -单击下一步“下一步” 现在,请在“4.结果”页上 在这里,您可以看到“C:总循环时间”(和其他结果)的结果,对于之前

我需要从GWT应用程序中的元素获取文本/值。可以在以下位置找到应用程序和元素:

-打开

-点击“产品”

-点击“软件”

-点击“旋转索引表”

-点击“下一步”

-点击“下一步”*

现在您已进入“3.加载设置”页面

-输入50(kg cm²)作为质量惯性矩

-输入50(kg)作为质量

-输入50(mm)作为r作为距离/杆臂

-输入50(度)作为希腊字母θ

-输入50(mm)作为Z

-单击下一步“下一步”

现在,请在“4.结果”页上

在这里,您可以看到“C:总循环时间”(和其他结果)的结果,对于之前页面上输入的值,该结果为0.518 s

我可以用selenium(perl)自动完成所有这些,直到我到达第4页,这里我无法获取结果。谁能给我一个建议怎么办?我想这不是perl的问题

如果我使用FireBug获取更多细节,我也无法在HTML选项卡中找到结果值“0.518”。如果我切换到FireBug的DOM选项卡,我就能找到它

Thx


罗兰

您可以尝试通过[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));

您可以尝试通过[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中:
camosframe camosfsv22e4a4c1e_EDC0_768B_CC78_8ba85abadcd

您需要首先切换到iframe,如下所示:

driver.switchTo().frame("Your-frame-id");
当动态生成帧时(这里可能是这种情况),您可以尝试传递索引


当您在正确的框架上时,您可以尝试使用css类找到您的元素:
input.GM53QT1CF
——但在我看来,它会选择页面上的所有输入字段。Selenium从列表中取第一个,因此在您的情况下应该可以。

GWT使用iFrame-这对Selenium测试不友好。 您的元素包含在此iframe中:
camosframe camosfsv22e4a4c1e_EDC0_768B_CC78_8ba85abadcd

您需要首先切换到iframe,如下所示:

driver.switchTo().frame("Your-frame-id");
当动态生成帧时(这里可能是这种情况),您可以尝试传递索引


当您在正确的框架上时,您可以尝试使用css类找到您的元素:
input.GM53QT1CF
——但在我看来,它会选择页面上的所有输入字段。Selenium从列表中选择第一个,因此在您的情况下应该可以。

您可以粘贴与您的问题相关的HTML代码吗?在关闭浏览器之前,屏幕上包含结果的字段是give Thread.sleep()。这样你就可以看到结果了。或者,您可以使用getText()从该页面获取结果并在日志中打印。使用此xpath获取总循环时间输入值:*html/body/table/tbody/tr[2]/td[1]/table/tbody/tr/td/table/tbody/tr[2]/td/table/tbody/tr[1]/td/table/tbody/tr[1]/td[2]/div/table/tbody/tr/td[1]/input**等待/睡眠没有任何区别,getText未获取该值。解决这个字段不是问题,我相信,我写了一个突出显示方法,它可以毫无问题地刷新这个字段。因此,使用完整的xpath可能不会改变任何东西。是否可以粘贴与问题相关的HTML代码?在关闭浏览器之前,屏幕上包含结果的字段是give Thread.sleep()。这样你就可以看到结果了。或者,您可以使用getText()从该页面获取结果并在日志中打印。使用此xpath获取总循环时间输入值:*html/body/table/tbody/tr[2]/td[1]/table/tbody/tr/td/table/tbody/tr[2]/td/table/tbody/tr[1]/td/table/tbody/tr[1]/td[2]/div/table/tbody/tr/td[1]/input**等待/睡眠没有任何区别,getText未获取该值。解决这个字段不是问题,我相信,我写了一个突出显示方法,它可以毫无问题地刷新这个字段。因此,使用完整的xpath可能不会改变任何东西。我的脚本在单击“旋转索引表”后直接切换到此IFrame。即使在结果页面上再次切换到这个fraim也没有什么区别。正如我所说,我在FireBug的HTML选项卡中看不到“0.518”或任何其他结果值,我只能在DOM选项卡中看到它。我可以用FireBug选择这个元素-只选择FireBug的“检查箭头”并将其指向元素。然后,我还可以使用FirePath扩展来评估css选择器。只需要选择合适的iframe。这是我可以用来验证您的定位器的唯一选项如果我使用“检查箭头”并单击字段,我会在HTML选项卡中看到这一点
我也必须选择FireBug中的帧吗?如果是,怎么做?是的,没关系。但是FirePath允许您评估页面上的定位器。在其顶部菜单的左侧,您可以选择理想的框架,并检查其是否良好。PEBCAK-椅子和键盘之间存在问题!!!在尝试获取这个值几天后,我注意到get_attribute('VALUE')语句被禁用(注释)。我想我在昨天注意到切换到此iFrame之前禁用了它。后来我太专注于萤火虫了,以至于错过了它。谢谢你,西米克!我的脚本在单击“旋转索引表”后直接切换到此IFrame。即使在结果页面上再次切换到这个fraim也没有什么区别。正如我所说,我在FireBug的HTML选项卡中看不到“0.518”或任何其他结果值,我只能在DOM选项卡中看到它。我可以用FireBug选择这个元素-只选择FireBug的“检查箭头”并将其指向元素。然后,我还可以使用FirePath扩展来评估css选择器。只需要选择p