我正在尝试点击包含多个链接的表行中的链接。此模式在整个表格中使用。
这有效:
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。
我正在尝试点击包含多个链接的表行中的链接。此模式在整个表格中使用。
这有效:
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。
我怀疑这是由于 cssQuery 中的一个错误,Selenium 目前使用它来通过 CSS 定位元素。问题的详细信息和补丁可以在以下问题的评论中找到:http: //jira.openqa.org/browse/SEL-698
希望有所帮助——我相信 Selenium 2 将为 CSS 定位器使用不同的库——可能是 JQuery 的 Sizzle ( http://sizzlejs.com/ ),它应该可以解决这个问题。
戴夫。
为了避免像这样痛苦的 CSS 问题,我安装了 jQuery 作为用户扩展。它提供了定义类似于 CSS ("jquery=td.dt-col-status div.dt-liner:contains('Complete')") 的定位器字符串的能力,功能更强大。如果你愿意,我可以扩展我是如何为 Java RC 做的。
这是 selenium 1 中的一个错误,我会尝试在你的 css 路径中写出整个路径,看看是否有帮助。
例如,如果您使用以下 html,则可以使用以下 css 定位器
<表格> <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"