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-clientrubygemを使用しています。

4

3 に答える 3

1

これは、Seleniumが現在CSSで要素を見つけるために使用しているcssQueryのバグが原因であると思われます。この問題とパッチの詳細は、次の問題のコメントに記載されています:http: //jira.openqa.org/browse/SEL-698

お役に立てば幸いです。Selenium2は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')")に似た、はるかに強力なロケーター文字列を定義することができます。必要に応じて、JavaRCでどのように実行したかを拡張できます。

于 2010-02-24T16:37:05.307 に答える
0

これはセレン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 に答える