0

私はSelenium2.0JavaWebdriverの初心者です。自分で学ぼうとしています。しかし、Webelementの識別に固執しました。Googleの検索結果をクリックしようとしています。文字列「SeleniumDownload」で検索し、最初の結果をクリックしようとしています。Firebugでは以下のように識別されます-

<a class="l" onmousedown="return rwt(this,'','','','1','AFQjCNF012aUD3cMR2x-qIQl2u6suxLnlw','','0CE0QFjAA',null,event)" href="http://www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CE0QFjAA&url=http%3A%2F%2Fseleniumhq.org%2Fdownload%2F&ei=Wb8oULKfHsjsrAf4_IDICQ&usg=AFQjCNF012aUD3cMR2x-qIQl2u6suxLnlw">
<em>Downloads</em>
-
<em>Selenium</em>
</a>

XPath:/ html / body / div [5] / div [2] / div / div [4] / div [2] / div [2] / div [2] / div [2] / div / ol / li / div / h3 / a

CSSPath:html body#gsr.vsh div#main div div#cnt.mdm div.mw div#rcnt div#center_col div#res.med div#search div#ires ol#rso li.g div.vsc h3.r al

しかし、私はこれを一意に識別することができませんでした。私は以下のようなことを試みました-

public static void main (String[] args) {

    WebDriver ffx1 = new FirefoxDriver();
    ffx1.get("http://www.google.com");
    ffx1.manage().window().maximize();
    ffx1.findElement(By.className("xbtn")).click();
    ffx1.findElement(By.name("q")).sendKeys("saikat");
    ffx1.findElement(By.name("btnG")).click();
    ffx1.findElement(By.xpath(My Expression));

}

私を助けてください。

4

1 に答える 1

0

クリアする必要があるものが2つあると思います。

最初に-あなたが持っているロケーターはおそらく間違ったものですグーグル検索ページの最初の検索要素のxpathは.//*[@ id ='rso'] / li [1] / div / h3/aになります

2番目-検索ボタンをクリックした後、検索結果が検索結果ページに表示されるまでに数秒かかります。したがって、ある程度の待機時間を挿入する必要があります。以下のコードでは、30秒の暗黙的な待機を使用しました。暗黙的な待機は、要素がすぐに利用できない場合に1つまたは複数の要素を見つけようとするときに、一定時間DOMをポーリングするようにWebdriverに指示します。

さて、次のコードで試してみると、うまくいくはずです

import java.util.concurrent.TimeUnit;

    public static void main(String[] args) throws InterruptedException {
        WebDriver ffx1 = new FirefoxDriver();
        ffx1.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        ffx1.get("http://www.google.com");
        ffx1.manage().window().maximize();
        ffx1.findElement(By.name("q")).sendKeys("saikat");
        ffx1.findElement(By.name("btnG")).click();
        ffx1.findElement(By.xpath(".//*[@id='rso']/li[1]/div/h3/a")).click();

    }
于 2012-08-13T15:14:40.737 に答える