我使用此代码来单击
List<WebElement> list = driver.findElements(By.xpath("//div[@class='ag-center-cols-container']//div"));
// check for list elements and print all found elements
if(!list.isEmpty())
{
for (WebElement element : list)
{
// System.out.println("Found inner WebElement " + element.getText());
}
}
// iterate sub-elements
for ( WebElement element : list )
{
System.out.println("Searching for " + element.getText());
if(element.getText().equals(valueToSelect))
{
new WebDriverWait(driver, 30).until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("//div[@class='overlay ng-star-inserted']")));
element.click();
break; // We need to put break because the loop will continue and we will get exception
}
}但有时我会在element.getText()这一行得到这个错误
org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attached to the page document您知道如何实现列表器来修复此issue>吗
发布于 2021-11-04 02:44:45
org.openqa.selenium.StaleElementReferenceException:
指示对某个元素的引用现在已“过时”-该元素不再出现在页面的DOM上。出现这种预期的原因可能是您的DOM已更新或刷新。例如,在执行click()这样的操作后,您的DOM可能会被更新或刷新。此时,当您尝试在DOM上查找元素时,您将遇到此错误。
您必须在更新或刷新的DOM中重新查找该元素
,但有时我在element.getText()这一行得到这个错误:
创建一个可重用的方法来处理此异常。
代码
public static String getTextFromElement(WebElement element, WebDriver driver) {
try {
return element.getText();
} catch (org.openqa.selenium.StaleElementReferenceException e) {
new WebDriverWait(driver, 15).until(ExpectedConditions.visibilityOf(element));
return element.getText();
}
}例如,您可以这样调用。
System.out.println("Found inner WebElement " + getTextFromElement(element, driver));https://stackoverflow.com/questions/69830538
复制相似问题