我目前的环境是使用Selenium RC(使用Selinium服务器2)的Firefox 3.6.28。最终,事情会被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:
<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>
可能导致这个奇怪错误的原因是什么?
答案 0 :(得分:1)
您需要修改
中的xpath//table[@class='results'])/tbody/tr[position()=5]/td/a
到
//table[@class='results']/tbody/tr[5]/td[2]/a