2017-02-02 14 views
1

私はseleniumをgoogleに入力して、メモ帳ファイルに結果のタイトルテキストをすべて取得しようとしています。私は検索の最後のページまで、すべてのページですべての利用可能なリンクを取得したい。最初のページのリンクのみが表示されます。私はデバッグして実行すると、これでいくつかのpages.helpのために働いています。すべての合計ページのリンクを取得できません

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

関連する問題