我正在尝试点击包含多个链接的表格行中的链接。整个表格中使用此模式。
这有效:
browser.wait_for(:element => "css=tr:nth-child(1) li:nth-child(2) > a")
这不是:
browser.click "css=tr:nth-child(1) li:nth-child(2) > a"
为什么会出现这种情况?我正在使用selenium-client rubygem。
答案 0 :(得分:1)
我怀疑这是由于cssQuery中的一个错误,Selenium目前使用它来通过CSS定位元素。有关问题和修补程序的详细信息,请参阅以下问题的评论:http://jira.openqa.org/browse/SEL-698
希望有所帮助 - 我相信Selenium 2将使用不同的CSS定位器库 - 可能是JQuery的Sizzle(http://sizzlejs.com/),这应该可以解决这个问题。
戴夫。
答案 1 :(得分:0)
为了避免像这样痛苦的CSS问题,我已经安装了jQuery作为用户扩展。它提供了定义类似于CSS的定位器String的能力(“jquery = td.dt-col-status div.dt-liner:contains('Complete')”),它更强大。如果你愿意,我可以扩展我为Java RC做的方式。
答案 2 :(得分:0)
这是selenium 1中的一个错误我会尝试写出你的css路径中的整个路径,看看是否有帮助。
如果您使用以下html,可以使用以下css定位器
<table> <tr> <td> <li> <a href="/yourlink" >
</li> </td> </tr> </table>
"css=tr:nth-child(1) > td > li:nth-child(2) > a"
如果这不起作用,您可以始终使用xpath。它与CSS定位器一样富有表现力,但往往有更少的故障。 使用xpath时,唯一需要记住的是它们通常比css定位器慢。
"xpath=//tr/td//li[2]/a"