2016-12-24 33 views
2

场景:转到Yahoo.com搜索hotmail,然后单击所有搜索页面。点击所有结果链接

我的代码:它只是打印结果页面的链接。有没有办法在没有页面的情况下点击页面2,3,4?

public class QAJob { 

    @Test 
    public void jobSearch(){ 
     WebDriver driver= new FirefoxDriver(); 
     driver.get("https://yahoo.com"); 
     driver.findElement(By.id("uh-search-box")).sendKeys("hotmail"); 
     driver.findElement(By.id("uh-search-button")).click(); 
     driver.manage().window().maximize(); 
     driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); 

     //scroll down 
     JavascriptExecutor jse = (JavascriptExecutor) driver; 
     jse.executeScript("window.scrollBy(0,1000)", ""); 

     List<WebElement> result_pages=driver.findElements(By.xpath("//div[contains(@class,'pagination')]//a[contains(@title,'')]")); 

     for (WebElement e: result_pages){ 

      Actions action= new Actions(driver); 

      WebElement search_results=driver.findElement(By.xpath("//div[contains(@class,'pagination')]//a[contains(@title,'')]")); 
      System.out.println(e.getAttribute("outerHTML"));  
     } 
    } 
} 
+1

你是什么意思'一次搜索所有搜索页面?多次点击同时? – Andersson

+0

我不明白你的问题,我知道你不能点击链接?只需在for循环中使用以下代码链接:e.click() –

+0

我可以找到页面2,3,4的xpath并对其进行硬编码,而我希望能够点击页面2和页面3,然后下一页,以便我不必对xpath进行硬编码,同时进行多次点击。 –

回答

0

的硒可以使用类名来寻找元素,在你的情况下,next环节都有类next,所以你需要的东西,如:

driver.findElement(By.className("next").click(); 

要到下一个页。

福克斯例如这个脚本打印所有链接(最多MAX_PAGES页):

int MAX_PAGES = 3; 
    driver.get("https://yahoo.com"); 
    driver.findElement(By.id("uh-search-box")).sendKeys("hotmail"); 
    driver.findElement(By.id("uh-search-button")).click(); 
    driver.manage().window().maximize(); 
    driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); 

    for (int i = 0; i < MAX_PAGES; i++) { 
     for (WebElement link : driver.findElements(By.cssSelector("h3.title > a"))) { 
      System.out.println("Title: " + link.getText() + " link" + link.getAttribute("href")); 
     } 
     driver.findElement(By.className("next")).click(); 
    } 

您可以更改MAX_PAGES变量走得更远,或者如果你喜欢把所有的网页,你可以赶上NotSuchElementException当我们到达最后一页时,硒会抛出。

+0

感谢您的解释,我能够使用您的解决方案稍微调整一下并使用它。 –