Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.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/selenium/4.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
Java 硒不';不要总是抓取正确的动态生成的链接_Java_Selenium_Xpath_Selenium Webdriver_Selenium Rc - Fatal编程技术网

Java 硒不';不要总是抓取正确的动态生成的链接

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

我当前的环境是使用Selenium RC的Firefox 3.6.28(使用Selenium服务器2)。最终,使用WebDriver的东西将迁移到Selenium 2.0,但我现在需要在Selenium RC中进行一些测试

我有一个动态生成的表,每行中都有一个“a href”链接。我想点击某一行的链接。然而,问题是有时候Selenium会正确地选择它(测试通过),有时候我会得到一个错误,说元素不存在(测试失败):

[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