Java 硒不';不要总是抓取正确的动态生成的链接
我当前的环境是使用Selenium RC的Firefox 3.6.28(使用Selenium服务器2)。最终,使用WebDriver的东西将迁移到Selenium 2.0,但我现在需要在Selenium RC中进行一些测试 我有一个动态生成的表,每行中都有一个“a href”链接。我想点击某一行的链接。然而,问题是有时候Selenium会正确地选择它(测试通过),有时候我会得到一个错误,说元素不存在(测试失败):Java 硒不';不要总是抓取正确的动态生成的链接,java,selenium,xpath,selenium-webdriver,selenium-rc,Java,Selenium,Xpath,Selenium Webdriver,Selenium Rc,我当前的环境是使用Selenium RC的Firefox 3.6.28(使用Selenium服务器2)。最终,使用WebDriver的东西将迁移到Selenium 2.0,但我现在需要在Selenium RC中进行一些测试 我有一个动态生成的表,每行中都有一个“a href”链接。我想点击某一行的链接。然而,问题是有时候Selenium会正确地选择它(测试通过),有时候我会得到一个错误,说元素不存在(测试失败): [testng]com.thoughtworks.selenium.Seleniu
[testng]com.thoughtworks.selenium.SeleniumException:错误:元素xpath=(//表[@class='results'])/tbody/tr[position()=5]/td/a未找到
似乎没有任何模式可用于检测/无法看到元素
要查看浏览器在收到错误时是否确实看到元素,我有如下内容:
...
try{
wrapWaitForPageToLoad("10000");
wrapWaitForPageToLoad("10000");
clickAndWait(xpath);
}catch(Exception e) { //loop indefinitely here }
结果是浏览器看到了元素。我在Selenium IDE中测试xpath。xpath显然是正确的,因为我可以在Selenium IDE中使用该xpath执行click命令
为了防止某些元素没有完全加载,我添加了一些值为10000的wrapWaitForPageToLoad()。然而,这似乎对问题没有影响。在任何情况下,元素似乎都是满载的,正如上面的测试所表明的。。。同时,增加时间也无济于事
firebug在表中提供给我的部分html:(注意,position()=5以获取listdata4,因为第一行是表的标题)
...
是什么导致了这个奇怪的错误?您需要从
//table[@class='results'])/tbody/tr[position()=5]/td/a
到
你能给我们一个htmlIf吗?如果xpath失败了,元素可能还不在DOM中。我会检查元素是否存在,如果不在重试之前再等待一点。@FrientedPeas的Roddy Why wait只是在debug中打开它。对不起,我应该发布html。这不起作用,因为没有id='resultsId'。@user1636922请尝试在html有效的情况下使用xpath。好的,我已将其更改为使用id,目前正在测试它。然而,使用@id而不是@class进行抓取有什么区别吗?我认为Selenium最好通过id找到它,而且我总是使用id(所以getElementById)。但这与xpath无关,我已经运行过多次了,它没有失败。然而,这个错误没有模式,我已经让过去的测试连续成功运行,然后它就失败了。。。但到目前为止看起来不错。我会把这个问题标记为已回答,如果它确实失败了,我会做出判断。非常感谢。
//table[@class='results'])/tbody/tr[position()=5]/td/a
//table[@class='results']/tbody/tr[5]/td[2]/a