2

我正在尝试点击包含多个链接的表行中的链接。此模式在整个表格中使用。

这有效:

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 ruby​​gem。

4

3 回答 3

1

我怀疑这是由于 cssQuery 中的一个错误,Selenium 目前使用它来通过 CSS 定位元素。问题的详细信息和补丁可以在以下问题的评论中找到:http: //jira.openqa.org/browse/SEL-698

希望有所帮助——我相信 Selenium 2 将为 CSS 定位器使用不同的库——可能是 JQuery 的 Sizzle ( http://sizzlejs.com/ ),它应该可以解决这个问题。

戴夫。

于 2010-02-19T11:42:43.740 回答
0

为了避免像这样痛苦的 CSS 问题,我安装了 jQuery 作为用户扩展。它提供了定义类似于 CSS ("jquery=td.dt-col-status div.dt-liner:contains('Complete')") 的定位器字符串的能力,功能更强大。如果你愿意,我可以扩展我是如何为 Java RC 做的。

于 2010-02-24T16:37:05.307 回答
0

这是 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" 
于 2013-03-25T20:19:04.310 回答