2016-06-27 6 views
1

Ich möchte das Suchergebnis von Google erhalten, nachdem ich eine Zeichenfolge für die Suche eingegeben habe. Wie kann ich das mit Selen machen? Bisher habe ich das geschafft:Alle Suchergebnisse von Google-Suchseite erhalten

WebDriver driver = new ChromeDriver(); 
     driver.get("http://www.google.com/xhtml"); 
     Thread.sleep(5000); 
     WebElement searchBox = driver.findElement(By.name("q")); 
     searchBox.sendKeys("ChromeDriver"); 
     searchBox.submit(); 

     System.out.println("Current Url: " + driver.getCurrentUrl()); 

     List<WebElement> results = driver.findElements(By.xpath("//h3[@class=r]/a")); 

     for(int i=0; i<results.size(); i++){ 
      System.out.println(">>>>> results " + results.get(i).getText()); 
     } 

     // second attempt 

     List<WebElement> allSearchResults = driver.findElements(By.cssSelector("ol li h3>a")); 

     //iterate the above list to get all the search titles & links from that page 
     for (WebElement eachResult : allSearchResults) 
     { 
      System.out.println("Title : " + eachResult.getText() + ", Link : " + eachResult.getAttribute("href")); 
     } 

Wie kann ich das lösen?

Antwort

1

Sie zu wait for the results to appear müssen sein Soll das Suchformular nach der Einreichung:

WebDriverWait wait = new WebDriverWait(webDriver, timeoutInSeconds); 
wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("h3.r a"))); 
+0

Wohin soll ich diesen Code setzen? –

+0

@PeterPenzov nach dem Einreichen und vor der Suche nach den Links. – alecxe

+0

Übrigens wissen Sie, warum die zweite Liste der Ergebnisse nicht funktioniert? Ich möchte es auch reparieren. –

0

Sie sind auf dem richtigen Weg. Es scheint, dass Ihr xpath falsch ist. Sie vermissen nächste Apostroph zu r

List<WebElement> results = driver.findElements(By.xpath("//h3[@class=r]/a")); 

List<WebElement> results = driver.findElements(By.xpath("//h3[@class='r']/a")); 

screenshot of google search

+0

Danke, aber wieder ich bekomme ein leeres Ergebnis. Irgendeine Idee warum? –