1

私は現在、スクリーン グラブで以下に示す強調表示された行をマッピングしようとしています。私はw3schoolsを見て、ここでSOを調べましたが、コードを正しく取得できないようです..私のセレンスクリプトは要素を識別できないというエラーを出し続けます.

強調表示された行の xpath

現在、私は次のようなことをしています:

selenium.click("xpath=//table[@id='resultTable']/tbody/tr[@class='level3']/td[@id='resultTable_0_0_1_ob']/span/a[@class='linkOnly']");

私もこれを試しました:

selenium.click("xpath=//table[@id='resultTable']/tbody[1]/tr[6]/td[2]/span[1]/a[1]");

この:

selenium.click("xpath=//table[@id='resultTable']/tbody/tr[6]/td[2]/span/a");

私はそれを正しく行っていますか?遅延を入れるだけですか?または私はこれを完全に間違っていますか?


編集:

要求されたコード スニペットを次に示します。ご指摘ありがとうございます。同じ名前のクラスが複数あることに気づきませんでした。うーん、しかし何らかの理由で、私が書いた他の 2 つの XPath が機能しません。

このコード スニペットでは、テーブルがどのように設定されているかをよく確認できるようにテーブルを拡張しました。繰り返しますが、画像サイズは申し訳ありませんが、Ctrl + 上にスクロールすると画像が拡大されます。

テーブル展開

4

2 に答える 2

1

私はcssセレクターを使用する方が好きです(現在はwebdriver + javaを使用しています)ので、問題の解決策は次のようになります。

  String cssSelector = "tr[class='level3']>td[id='resultTable_0_0_1_ob']>span>a[class='linkOnly']"
    driver.findElement(By.cssSelector(cssSelector)).click():
    driver.manage.timeouts.implicitWait(3,TimeUnit.SECONDS);

ID ='resultTable_0_0_1_ob'を取得したので、このIDはページ上の一意の要素を見つけるのに役立つと思います。 問題を解決する2番目の方法:サイトが実装されているフレームワークがjQueryをサポートしている場合も、jQueryを簡単に使用できます。

JavascriptExecutor js = (JavascriptExecutor) driver;
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("var x = $("tr[class='level3']>td[id='resultTable_0_0_1_ob']>span>a[class='linkOnly'];");
        stringBuilder.append("x.click();");
        js.executeScript(stringBuilder.toString());

また、Firefoxのfirepath(firebug拡張機能)のxpath、cssセレクターを確認することを忘れないでください。下の写真が提供されています: ファイアパス

これがお役に立てば幸いです。

于 2012-11-10T06:39:49.893 に答える
0

xpath=//table[@id='resultTable']/tbody/tr[@class='level3']/td[@id='resultTable_0_0_1_ob']/span/a[@class='linkOnly']

対応する CSS は css=#resultTable > tbody > tr.level3 > #resultTable_0_0_1_ob > span > .linkOnly です。

于 2014-04-03T06:06:02.220 に答える