2014-01-30 89 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

注意:我已經執行了這個,現在它的工作正常。它會給你的大小和點擊每個鏈接。這是一個問題,你需要進入框架。 它有一個你需要切換的框架。 請複製粘貼並執行。 希望你找到你的答案。

相關問題