我一直在用
wait.until(ExpectedConditions.presenceOfElementLocated(By.id("some_id_here")));
和
wait.until(ExpectedConditions.elementToBeClickable(By.id("some_id_here")));
尝试避免StaleElementReferenceExceptions,但它们会不断被抛出。
我相信页面正在刷新这些元素,但我调用这些元素的方式是这样的:
public static WebElement login_btn(WebDriver driver, WebDriverWait wait) {
wait.until(ExpectedConditions.presenceOfElementLocated(By.id("btnEntrar")));
wait.until(ExpectedConditions.elementToBeClickable(By.id("btnEntrar")));
element = driver.findElement(By.id("btnEntrar"));
return element;
}
然后返回元素并使用它,所以理论上它应该在每次使用时搜索元素。
这也可能是导致此异常被抛出的原因,还有其他避免它们的方法吗?