2014-02-19 44 views
0

我想找出頁面上的斷開的鏈接「StaleElementReferenceException:元素在緩存中沒有發現 - 也許是頁面發生了變化,因爲它是擡頭

但我得到的第二次迭代當我嘗試錯誤。點擊第二個鏈接(查看頁面上斷開的鏈接)

StaleElementReferenceException: Element not found in the cache - perhaps the page has changed since it was looked up Command duration or timeout: 47 milliseconds" 

這裏是我的代碼:?

WebElement element =driver.findElement(By.tagName("a")); 
    List<WebElement> links = driver.findElements(By.tagName("a")); 
    System.out.println(links.size()); 

    for (int index=0; index<links.size(); index++) { 
     links.get(index).click(); 
     driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
     driver.getTitle(); 
     driver.navigate().back(); 

     } 

任何人都可以請讓我知道我犯了一個錯誤

+0

的可能的複製[硒的webdriver與Java:元素不在緩存中發現 - 也許是頁面發生了變化,因爲它是擡頭(http://stackoverflow.com/questions/17972359/selenium-webdriver-與Java的元素未找到,在最高速緩存也許最頁) –

回答

1

我認爲你不能在頁面上存儲元素,瀏覽,然後回來使用它們。每次到達新頁面時,都需要再次選擇它們(刷新類型)。

嘗試是這樣的

for (int index=0; index<links.size(); index++) { 
     links = driver.findElements(By.tagName("a")); 
     links.get(index).click(); 
     driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
     driver.getTitle(); 
     driver.navigate().back(); 
    } 
0

如果頁面重新加載鏈接(webelements的列表)將失去保持點擊下一個元素。

你可以按照下面的方式點擊循環中的每個鏈接。

WebElement element =driver.findElement(By.tagName("a")); 
List<WebElement> links = driver.findElements(By.tagName("a")); 
System.out.println(links.size()); 

for (int index=0; index<links.size(); index++) { 
     driver.findElements(By.tagName("a")).get(i).click(); //this is what I've change 
     driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
     driver.getTitle(); 
     driver.navigate().back(); 

} 
相關問題