我尝试单击一天,但收到错误“过时元素引用:未找到过时元素” 我可以打印一个月中的每一天以及类似的内容,但是当我尝试单击某一天时,它会出现错误
public void GetData(WebDriver driver,String userYear) {
List<WebElement> days = locators.getLocationOfTheDays(divPathSelector(userYear));
for(WebElement day : days) {
System.out.println(day.getText());
day.click();
ShowBtn(userYear);
BackBtn(userYear);
}
}
我想点击该月的第一天,然后跳过第二天,点击第二天。必须这样一直到这个月的最后一天。
您的错误消息听起来像是该元素未附加到 DOM。这就是为什么我建议通过等待元素来确保元素正确加载,或者如果加载时出现问题则抛出异常。
由于您使用
selenium
,您可以使用如下代码片段来完成此操作:
import org.openqa.selenium.By;
import org.openqa.selenium.StaleElementReferenceException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public void GetData(WebDriver driver, String userYear) {
WebDriverWait wait = new WebDriverWait(driver, 10);
List<WebElement> days = locators.getLocationOfTheDays(divPathSelector(userYear));
for (WebElement day : days) {
try {
System.out.println(day.getText());
wait.until(ExpectedConditions.elementToBeClickable(day)).click();
ShowBtn(userYear);
BackBtn(userYear);
} catch (StaleElementReferenceException e) {
System.out.println("Stale element reference encountered. Retrying...");
day = driver.findElement(By.xpath(divPathSelector(userYear))); // Re-locate the element
wait.until(ExpectedConditions.elementToBeClickable(day)).click();
ShowBtn(userYear);
BackBtn(userYear);
}
}
}