java Selenium并不总是能够识别从DOM中删除元素的时间
我在mac 10.12.3上使用chrome 56和chromedriver 2.27时遇到了问题,尽管我尝试了几个不同版本的驱动程序和几个不同版本的浏览器,但都遇到了同样的问题。在UI中,我可以非常清楚地看到一个阻塞层已经清除,但selenium仍然认为它没有清除。在等待阻塞层清除后(只看浏览器),如果我捕获驱动程序的结果。getPageSource(),我得到的是“旧”页面源,而不是新的页面源(删除了阻塞层)。当我以html文档的形式查看旧页面源代码时,我可以看到阻塞层。当我查看测试结束时拍摄的屏幕截图时,显然没有阻塞层,对DOM的手动检查显示元素已被删除。不知何故,selenium似乎正在缓存旧的页面源代码,并且无法识别某个元素何时已从DOM中删除。我似乎无法强迫它刷新缓存(?)不完全重新加载页面的html。我希望避免重新加载页面,因为这会使测试阻塞层是否被正确删除的测试无效
我试着通过blocking layer元素(使用类似element.isDisplayed()或element的良性工具)从中获取一些信息。getLocation()),它们的行为似乎仍然像元素仍然存在一样
如有任何关于如何处理此问题的建议,将不胜感激
# 1 楼答案
我在展开/折叠TreeNode动画时也遇到了同样的问题,因此我实现了以下功能,这些功能将在节点展开/折叠后启动:
# 2 楼答案
如果您的目标是在不考虑阻塞层状态的情况下单击该项,则可以使用内联javascript单击元素。下面是示例代码