gpt4 book ai didi

java - Selenium Webdriver 在 DOM 中查找元素时出错

转载 作者:行者123 更新时间:2023-12-02 02:22:00 30 4
gpt4 key购买 nike

我正在尝试在 Selenium webdriver 上运行测试。

有时我会收到一条错误消息,指出该元素已过时且无法找到,当我单击网站第二页上的按钮时会发生这种情况:

 bookNowButton.click();

它是间歇性的,不会在每次测试运行时发生

我引入了“等待”,但它似乎没有什么区别

以前有人遇到过这种情况吗?您是如何解决的?

错误信息:

test.java > Test - Chrome > com.bookinggo.ticketed.uiendtoend.TicketedReturnJourneyTest > return_tc03 FAILED
org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attached to the page document
(Session info: chrome=76.0.3809.25)
(Driver info: chromedriver=76.0.3809.25 (a0c95f440512e06df1c9c206f2d79cc20be18bb1-refs/branch-heads/3809@{#271}),platform=Mac OS X 10.14.5 x86_64) (WARNING: The server did not provide any stacktrace information)

完整代码:

public boolean waitForPageCheckOutPageToLoad() {
try {
WebDriverWait waitPage = new WebDriverWait(driver, 30);
waitPage.until(ExpectedConditions.elementToBeClickable(By.xpath("//span[@class='bui-button__text']")));
return TRUE;
} catch (NoSuchElementException e) {
return FALSE;
}
}

public void clickBookNowButton()
{
waitForPageCheckOutPageToLoad();
WebElement bookNowButton = driver.findElement(By.xpath("//span[@class='bui-button__text']"));
bookNowButton.click();
}

最佳答案

在以下两种情况之一中会引发过时元素引用异常,第一种情况比第二种情况更常见:

  • 该元素已被完全删除。
  • 该元素不再附加到 DOM。

    Refrence

尝试使用此代码等待元素,直到可以访问为止。

new WebDriverWait(driver, timeout)
.ignoring(StaleElementReferenceException.class)
.until(new Predicate<WebDriver>() {
@Override
public boolean apply(@Nullable WebDriver driver) {
driver.findElement(By.id("checkoutLink")).click();
return true;
}
});

关于java - Selenium Webdriver 在 DOM 中查找元素时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57272435/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com