2014-01-30 157 views
3

我想点击状态链接给出的网址,然后打印下一页的标题,然后回去,然后单击另一个状态链接动态使用循环。但循环在初始值后停止。
我的代码如下:点击链接逐一使用硒webdriver在同一页

public class Allstatetitleclick { 
    public static void main(String[] args) {   
     WebDriver driver = new FirefoxDriver(); 
     driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 
     driver.manage().window().maximize(); 
     driver.get("http://www.adspapa.com/");  

     WebElement catBox = driver.findElement(By.xpath("html/body/table[1]/tbody/tr/td/table/tbody/tr/td[1]/table")); 
     List<WebElement> catValues = catBox.findElements(By.tagName("a")); 

     System.out.println(catValues.size()); 

     for(int i=0;i<catValues.size();i++){ 

      //System.out.println(catValues.get(i).getText());  
      catValues.get(i).click(); 
      System.out.println(driver.getTitle()); 
      driver.navigate().back(); 

     } 
     System.out.println("TEST"); 
    } 
} 

回答

3

的问题是导航回到先前发现将过期的元素之后。因此,我们需要更新代码以在导航回去之后重新引用元素。

更新代码如下:

 WebDriver driver = new FirefoxDriver(); 
     driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 
     driver.manage().window().maximize(); 
     driver.get("http://www.adspapa.com/");  

     WebElement catBox = driver.findElement(By.xpath("html/body/table[1]/tbody/tr/td/table/tbody/tr/td[1]/table")); 
     List<WebElement> catValues = catBox.findElements(By.tagName("a")); 

     for(int i=0;i<catValues.size();i++) 
     { 
      catValues.get(i).click(); 
      System.out.println(driver.getTitle()); 
      driver.navigate().back(); 
      catBox = driver.findElement(By.xpath("html/body/table[1]/tbody/tr/td/table/tbody/tr/td[1]/table")); 
      catValues = catBox.findElements(By.tagName("a")); 
     } 
     driver.quit(); 

我已经在我结束上面的代码测试,其工作fine.You可以改善上面的代码,按您的使用。

+0

如果它适合您,请将其标记为答案。谢谢!!! :) – Himanshu

-2

注意:我已经执行了这个,现在它的工作正常。它会给你的大小和点击每个链接。这是一个问题,你需要进入框架。 它有一个你需要切换的框架。 请复制粘贴并执行。 希望你找到你的答案。

相关问题