我已經有一段研究這個錯誤,並嘗試很多事情,似乎沒有任何工作...硒:StaleElementReferenceException
while(!driver.findElements(By.className("next")).isEmpty()) {
//elements = driver.findElements(By.xpath("//a[@class='name']"));
elements = findDynamicElements("//a[@class='name']");
for (WebElement e : elements) {
userName = e.getText(); //<--EXCEPTION HERE
check_visitor_profile(userName);//<--WE LEAVE THE PAGE HERE
Thread.sleep(3000); //<--NO TRY/CATCH BLOCK FOR READABILITY
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
elements = findDynamicElements("//a[@class='name']");
}
driver.findElement(By.xpath("VisitsNext")).click();
}
protected List<WebElement> findDynamicElements(String path) {
List<WebElement> result;
String xPath = path;
new WebDriverWait(driver, 25).until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath(xPath)));
//new WebDriverWait(driver, 25).until(elementIdentified(By.id(path)));
try {
result = driver.findElements(By.xpath(xPath));
return result;
}
catch(WebDriverException e) {
return null;
}
);
}
我的代碼胡扯出來的for循環其中username第一線被安排了。我在這個論壇上看到你應該使用'presenceOfElementLocated'並明確地等待元素回來,但這也不起作用。我使用'presenceOfAllElementsLocatedBy'作爲列表,但是我有一個使用'presenceOfElementLocated'的方法,它也不起作用。
我知道像Thread.sleep代碼和implicitlyWait行的東西是在這一點上可能沒有必要,但我已經從字面上都試過了,它不工作...發生
的錯誤,因爲當我打電話「 check_visitor_profile'它會離開頁面 - 當它返回時,元素不在原位,所以我必須再次找到它們。我做了,但仍然拋出異常。
任何想法?
謝謝。
這就是我一直在尋找的答案 - 謝謝。 – MatTaNg