我有一个Web应用程序可以使用Selenium进行测试。页面加载时运行着许多JavaScript。 该JavaScript代码编写得不太好,但是我什么也不能更改。因此,使用findElement()method 等待元素出现在DOM 中不是一个选择。 我想在Java中创建一个通用函数来等待页面加载,可能的解决方案是:
findElement()
document.body.innerHTML
body
notChangedCount
notChangedCount >= 10
您认为这是有效的解决方案吗?
如果有人真的知道一个通用且始终适用的答案,那么它将 在 很久以前的 所有地方 得到实施,这将使我们的生活变得如此轻松。
您可以做很多事情,但是其中每一个都有一个问题:
正如Ashwin Prabhu所说,如果您对脚本非常了解,则可以观察其行为并在window或document等上跟踪其一些变量。但是,该解决方案并不适合所有人,只能由您自己使用,并且只能在有限的一组上使用。页面。
window
document
通过观察HTML代码以及一段时间内是否已更改,您的解决方案也不错(同样,有一种方法可以通过来直接获取原始HTML和未经编辑的HTML WebDriver),但是:
WebDriver
setTimeout()
innerHTML
而且我想我很快会想到另一个有缺陷的解决方案。事实是- 由于永恒的脚本正在执行工作,因此何时说“现在页面已完成”没有确切的答案。选择一个最能为您服务的产品,但要提防它的缺点。