2017-02-02 3 views
1

Ich versuche, selenium in Google einzugeben und den gesamten Titeltext des Ergebnisses in einer Notepad-Datei zu erhalten. Ich möchte alle verfügbaren Links auf allen Seiten erhalten, bis zur letzten Seite der Suche. aber nur den Link der ersten Seite bekomme ich. Wenn ich debugge und laufe, funktioniert es für einige 10 Seiten. Hilf mir dabei.Nicht in der Lage, Links von allen Seiten zu erhalten

JAVA-Code:

public class weblink 
{ 
    public static void main(String[] args) throws IOException, InterruptedException { 
    WebDriver driver; 
    System.setProperty("webdriver.chrome.driver", "E:\\disha.shah/myWork/eclipse/chromedriver.exe"); 
    driver = new ChromeDriver(); 
    driver.manage().window().maximize(); 
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
    driver.get("http://www.google.co.in/"); 
    driver.findElement(By.id("lst-ib")).sendKeys("Selenium"); 
    driver.findElement(By.id("_fZl")).click(); 

    PrintStream ps = new PrintStream(new File(("E:\\disha1.txt"))); 
    do 
    { 
     List<WebElement> findElements = driver.findElements(By.xpath("//*[@id='rso']//h3/a")); 
     for (WebElement webElement : findElements)  
     { 
      System.out.println("-" + webElement.getText()); // for title 
      //System.out.println(webElement.getAttribute("href")); // for links 
      driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 
      System.setOut(ps); 
      driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 
     } 

     Thread.sleep(1000); 


     if(driver.findElement(By.linkText("Next")).isDisplayed()== true) 
     { 
      driver.findElement(By.linkText("Next")).click();  
     } 
     else 
     { 
      System.out.println("All Link is Covered"); 
     } 


    } 
    while(driver.findElement(By.linkText("Next")).isDisplayed()); 
    { 
     //Thread.sleep(2000); 
    } 


    } 
} 

Antwort

1

Ich habe eine gewisse Korrektur durchgeführt. Der aktualisierte Code ist unten.-

public static void main(String[] args) throws IOException, InterruptedException 
{ 
    WebDriver driver; 
    System.setProperty("webdriver.chrome.driver", "D:/Application/chromedriver.exe"); 
    driver = new ChromeDriver(); 
    driver.manage().window().maximize(); 
    driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 
    driver.get("http://www.google.co.in/"); 

    driver.findElement(By.id("lst-ib")).sendKeys("Selenium"); 
    driver.findElement(By.id("_fZl")).click(); 
    Boolean nextButtonFlag = true; 
    // Create two separate file storing the result 
    PrintStream searchTitle = new PrintStream(new File(("D:\\Titles.txt"))); 
    PrintStream searchLink = new PrintStream(new File(("D:\\Links.txt"))); 
    do 
    { 
       List<WebElement> findElements = driver.findElements(By.xpath("//h3[@class='r']/a")); 
       for (WebElement element : findElements) 
       { 
        // Write all received links and title inn txt file 
        searchTitle.append(element.getText()+"\n"); 
        searchLink.append(element.getAttribute("href")+"\n"); 
       } 
        Thread.sleep(2000); 
       try 
       { 
        driver.findElement(By.linkText("Next")).click(); 
       } 
       catch(Exception e) 
       { 
        // no more next button to navigate further link 
        nextButtonFlag=false; 
       } 

       Thread.sleep(2500); 
     } 
     while(nextButtonFlag); 

      System.out.println("Execution done"); 
      searchTitle.close(); 
      searchLink.close(); 
    } 
} 
+0

Ich habe dieses Problem an meinem Ende versuchen, jetzt funktioniert es gut für mich. –

+0

es funktioniert, aber Ausgabe wird nicht in neue Zeile gedruckt .. es druckt in der gleichen Zeile. – disha

+0

Kann ich mehr über nextButtonFlag erfahren? – disha

Verwandte Themen