我在Mac 10.12.3上将chrome 56与chromedriver 2.27结合使用时遇到问题,尽管我尝试了几种不同版本的驱动程序和几种不同版本的浏览器,但遇到了同样的问题。在用户界面中,我可以很清楚地看到已经清除了一个阻塞层,但是硒仍然认为还没有清除。等待阻塞层清除后(仅查看浏览器),如果捕获driver.getPageSource()的结果,则会得到“旧”页面源,而不是新页面源(去除了阻塞层)。当我将旧页面源作为html文档查看时,可以看到阻挡层。当我查看测试结束时拍摄的屏幕截图时,显然没有阻挡层,并且对DOM的手动检查显示该元素已被删除。硒似乎以某种方式正在缓存旧页面源,并且无法识别何时从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));
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句