0

我想搜索谷歌的硒,然後運行下來的鏈接列表中點擊每一個,打印頁面標題,然後導航回來。如何找到搜索鏈接在谷歌在硒在測試

List<WebElement> linkElements = driver.findElements(**<insert code here>**); 

for(WebElement elem: linkElements) 
{ 
    String text = elem.getText(); 
    driver.findElement(By.linkText(text)).click(); 
    System.out.println("Title of link\t:\t" + driver.getTitle()); 
    driver.navigate().back(); 
} 

要查找的內容,我都試過By.tagName(「A」),這是不行的,因爲它得到的所有鏈接,而不僅僅是搜索的。使用Firebug,我發現每個搜索鏈接都有一個用於頭部h3的r類,並且嵌入了一個標籤。

請參閱以下內容:

<h3 class="r"> 
<a href="/url sa=t&amp;rct=j&amp;q=selenium&amp;source=web&amp;cd=1&amp;cad=rja&amp;ved=0CC8QFjAA&amp;url=http%3A%2F%2Fseleniumhq.org%2F&amp;ei=y4eNUYiIGuS7iwL-r4DADA&amp;usg=AFQjCNHCelhj_BWssRX2H0HZCcPqhgBrRg&amp;sig2=WBhmm65gCH7RQxIv9vgrug&amp;bvm=bv.46340616,d.cGE" onmousedown="return rwt(this,'','','','1','AFQjCNHCelhj_BWssRX2H0HZCcPqhgBrRg','WBhmm65gCH7RQxIv9vgrug','0CC8QFjAA','','',event)"><em>Selenium</em> - Web Browser Automation 
</a></h3> 

什麼代碼,我可以插入,使這項工作?

回答

0

試試下面新代碼

WebDriver driver; 
    driver = new FirefoxDriver(); 
    driver.get("http://www.google.com"); 
    driver.findElement(By.id("gbqfq")).sendKeys("Selenium"); 
    Thread.sleep(1500L); 
    driver.findElement(By.id("gbqfb")).click(); 
    Thread.sleep(1500L); 
    List<WebElement> linkElements = driver.findElements(By.xpath("//h3[@class='r']/a")); 
    for(int i=0;i<=linkElements.size();i++) 
     { 
      String text = linkElements.get(i).getText(); 
      driver.findElement(By.linkText(text)).click(); 
      Thread.sleep(2000L); 
      System.out.println("Title of link\t:\t" + driver.getTitle()); 
      Thread.sleep(2000L); 
      driver.navigate().back(); 
      linkElements = driver.findElements(By.xpath("//h3[@class='r']/a")); 

     } 
+0

這實際上不起作用,其他解決方案也沒有。也許xpath是錯誤的? – Rishi 2013-05-15 05:49:16

+0

我編輯了我的代碼,可以用同樣的方法檢查。 – Omkar 2013-05-15 06:20:52

0

你有很多的解決方案,這樣做。有我的。你讓你的方式像

// You get all links in a list 
List<WebElement> linkElements = driver.findElements(By.xpath("//h3/a")); 

// for each element(link) you click() on it 
for(WebElement elem: linkElements) 
{ 
    elem.click(); 
    // i suggest to put a wait right there 
    System.out.println("Title of link\t:\t" + driver.getTitle()); 
    driver.navigate().back(); 
} 

我不知道爲什麼你試圖用getText()等複雜化

+0

這實際上不起作用,其他解決方案也不起作用。也許xpath是錯誤的? – Rishi 2013-05-15 05:50:58

+1

@ user1796994讓我們試試這個By.cssSelector(「h3.r a」)或By.xpath(「// h3 [@ class ='3']/a」)' – e1che 2013-05-15 12:56:09

0

嘗試搜索這個選擇:

'.g:nth-child('+clickPosition+') h3.r a' 

其中「clickPosition」是SERP結果數組鍵。小心,谷歌現在實現了一個「onmousedown」事件,將改變href屬性爲他們的重定向。