2017-02-02 2 views
1

Я пытаюсь ввести selenium в google и получить весь текст заголовка результата в файле блокнота. Я хочу получить все доступные ссылки на всех страницах, до последней страницы поиска. но только ссылка первой страницы, которую я получаю. когда я отлаживаю и запускаю, он работает примерно на 10 страницах. Помогите мне в этом.Не удалось получить ссылки на все страницы

код JAVA:

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); 
    } 


    } 
} 

ответ

1

Я сделал некоторые исправления. обновленный код приведен ниже.

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

Я пробовал эту проблему на моем конце, теперь она работает отлично для меня. –

+0

его рабочий, но вывод печатается не в новой строке .. он печатает на той же строке. – disha

+0

Могу ли я узнать больше о nextButtonFlag? – disha