我当前的环境是使用 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>
什么可能导致这个奇怪的错误?