gpt4 book ai didi

java - Selenium 并不总是能够识别元素何时从 DOM 中删除

转载 作者:行者123 更新时间:2023-11-30 02:39:15 24 4
gpt4 key购买 nike

我在 mac 10.12.3 上使用 chrome 56 和 chromedriver 2.27 时遇到问题,尽管我尝试了几个不同版本的驱动程序和几个不同版本的浏览器,但遇到了相同的问题。在 UI 中,我可以非常清楚地看到阻塞层已清除,但 selenium 仍然认为它尚未清除。等待阻塞层清除后(只需查看浏览器),如果我捕获 driver.getPageSource() 的结果,我将获得“旧”页面源,而不是新页面源(已删除阻塞层)。当我以 html 文档形式查看旧页面源时,我可以看到阻塞层。当我查看测试结束时拍摄的屏幕截图时,显然没有阻塞层,并且手动检查 DOM 显示该元素已被删除。不知何故,selenium 似乎正在缓存旧的页面源,并且无法识别元素何时从 DOM 中删除。我似乎无法在不完全重新加载页面的情况下强制它刷新缓存的(?)html。我想避免重新加载页面,因为这会使阻止层是否正确删除的测试无效。

我尝试从阻塞层元素获取一些信息(使用诸如 element.isDisplayed() 或 element.getLocation() 之类的良性内容),这些信息似乎仍然表现得好像该元素仍然存在一样。

任何有关如何处理此问题的建议将不胜感激。

最佳答案

如果您的目标是单击该项目,而不管阻止层的状态,您可以使用内联 JavaScript 来单击元素。示例代码如下。

    try {
e.click();
} catch (org.openqa.selenium.WebDriverException E1) {
((JavascriptExecutor) driver).executeScript("arguments[0].click();", e.findElements(By.xpath(".//a")).get(0));
}

关于java - Selenium 并不总是能够识别元素何时从 DOM 中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42261258/

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