Selenium:无法在表格中找到链接

时间:2009-11-13 06:15:56

标签: css selenium

我正在编写Selenium脚本。对于包含表格的html页面,我不能使用“css = table tr:nth-​​child(2)td:nth-​​child(3)a”来定位表中的链接。 Selenium IDE给我“找不到[错误]定位器”。

但是使用“css = table tr:nth-​​child(2)”,它可以找到行。 所以我误认为是css定位器,我认为添加“td:nth-​​child(3)a”应该适用于td中的链接,为什么不呢?

编辑:我正在使用firefox 3.0.15

2 个答案:

答案 0 :(得分:8)

鉴于HTML:

<html>
  <body>
    <table>
      <tr><td>Hello</td><td>World</td></tr>
      <tr><td>I'm</td><td><a href="http://www.example.com/">Batman</a></td></tr>
    </table>
  </body>
</html>

您可以使用以下定位器作为第2行第2列中的链接:

css=tr:nth-child(2) > td:nth-child(2) > a

<强>更新

经过一些研究后,您的原始定位器应该工作,但不是由于Selenium(http://jira.openqa.org/browse/SEL-698)使用的cssQuery库中的错误。我上面的建议有效,但它确实只是一个解决方法,直到错误修复。不幸的是,考虑到cssQuery已经有一段时间没有更新了,我不确定这将在多久后得到解决。

答案 1 :(得分:0)

Selenium IDE 2.1.0中还存在类似的问题

我正在测试一组网站,以检查特定网址是否已更改。

我应该检查的链接是在一张桌子中,在顶部的第25个左右......

<tr>
<td>
<div align="center">
<font color="#FFFFFF">
<a target="_blank" href="http://[The link I need to test] ... 

我已经同时使用了

assertElementPresent  //*[starts-with(@href,'The Link')]

assertElementPresent  //*[contains(@*,'The Link')]

在某些情况下,第一个会找到一个结果,但第二个不会。大多数时候都不会找到链接。