0

我是 Selenium 2.0 Java Webdriver 的菜鸟。试着自学。但坚持识别一个Webelement。我试图点击谷歌的搜索结果。我正在搜索字符串“Selenium Download”并尝试单击第一个结果。它在 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

我认为有两点需要清除:

首先 - 您拥有的定位器可能是不正确的定位器,谷歌搜索页面上第一个搜索元素的 xpath 将是 .//*[@id='rso']/li[1]/div/h3/a

第二 - 单击搜索按钮后,搜索结果确实需要几秒钟才能显示在搜索结果页面上。因此,必须插入一些等待时间。我在下面的代码中使用了 30 秒的隐式等待。隐式等待将告诉 Webdriver 在尝试查找一个或多个元素(如果它们不是立即可用)时轮询 DOM 一段时间。

现在,如果您尝试使用以下代码,它应该可以工作

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 回答