2

我当前的环境是使用 Selenium RC 的 Firefox 3.6.28(使用 Selinium 服务器 2)。最终,事情将通过 WebDriver 迁移到 Selenium 2.0,但我现在需要进行一些测试才能在 Selenium RC 中工作。

我有一个动态生成的表,每行内都有一个“a href”链接。我想点击某一行的链接。但是,问题有时是 Selenium 正确地选择了它(测试通过),有时我收到一条错误消息,指出该元素不存在(测试失败):

[testng] com.thoughtworks.selenium.SeleniumException: ERROR: Element xpath=(//table[@class='results'])/tbody/tr[position()=5]/td/a not found

似乎没有任何检测/未能看到元素的模式。

要查看当我收到错误时浏览器是否真的看到了该元素,我有这样的事情:



    ...
    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" cellspacing="0" cellpadding="1" border="0" style="cursor: default;">
<tbody>
<tr id="titles">
<tr class="listdata1" style="">
<tr class="listdata2" style="">
<tr class="listdata3" style="">
<tr class="listdata4" style="">
    <td align="center">...</td>
    <td>
        <a href="/click/this/link">Cake Pictures</a>
    </td>

什么可能导致这个奇怪的错误?

4

1 回答 1

1

You need to modify xpath from

//table[@class='results'])/tbody/tr[position()=5]/td/a

to

//table[@class='results']/tbody/tr[5]/td[2]/a
于 2012-08-30T19:30:46.337 回答