Selenium WebDriver:等待加载JavaScript的复杂页面
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Selenium WebDriver:等待加载JavaScript的复杂页面,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1984字,纯文字阅读大概需要3分钟。
内容图文
我有一个用Selenium测试的Web应用程序.页面加载时会运行很多JavaScript.
这段JavaScript代码编写得不是很好,但我无法改变任何东西.
因此,等待元素出现在DOM中并使用findElement()方法不是一种选择.
我想在Java中创建一个通用函数来等待页面加载,可能的解决方案是:
>从WebDriver运行JavaScript脚本,并将document.body.innerHTML的结果存储在字符串变量体中.
>将body变量与先前版本的body进行比较.如果它们相同,则设置增量计数器notChangedCount,否则将notChangedCount设置为零.
>等待一个小时(例如50毫秒).
>如果页面没有改变一段时间(例如500毫秒),那么notChangedCount> = 10然后退出循环,否则循环到第一步.
你认为这是一个有效的解决方案吗?
解决方法:
如果有人真的知道一般的,总是适用的答案,它会在很久以前的任何地方实施,并且会让我们的生活变得更加容易.
你可以做很多事情,但每一个都有问题:
>正如Ashwin Prabhu所说,如果您对脚本有所了解,您可以观察其行为并在窗口或文档等上跟踪其中的一些变量.但是,此解决方案并非适用于所有人,并且只能由您使用,并且仅适用于有限的一组页面.
>通过观察HTML代码以及它是否已经有一段时间没有被更改的解决方案也不错(同样,还有a method直接通过WebDriver获取原始的和未经编辑的HTML),但是:
>实际断言页面需要很长时间才能显着延长测试时间.
>你永远不知道正确的间隔是什么.该脚本可能正在下载超过500毫秒的大型内容.我们公司的内部页面上有几个脚本在IE中需要几秒钟.您的计算机可能暂时缺少资源 – 比如防病毒软件会让您的CPU完全运行,那么即使对于非复杂的脚本,500毫秒也可能太短.
>有些脚本永远不会完成.他们称自己有一些延迟(setTimeout())并一次又一次地工作,并且每次运行时都可能更改HTML.说真的,每个“Web 2.0”页面都能做到.甚至Stack Overflow.您可以覆盖最常用的方法并考虑使用它们完成的脚本,但是……您无法确定.
>如果脚本执行除了更改HTML之外的其他操作,该怎么办?它可以做成千上万的事情,而不仅仅是一些内在的HTML乐趣.
>有一些工具可以帮助您.即Progress Listeners和nsIWebProgressListener以及其他一些人.然而,浏览器对此的支持非常糟糕. Firefox开始尝试从FF4开始支持它(仍在不断发展),IE在IE9中有基本支持.
我想我很快就会想出另一个有缺陷的解决方案.事实是 – 由于永久的脚本正在完成他们的工作,所以没有明确的答案何时说“现在页面已完成”.选择最适合你的那个,但要注意它的缺点.
内容总结
以上是互联网集市为您收集整理的Selenium WebDriver:等待加载JavaScript的复杂页面全部内容,希望文章能够帮你解决Selenium WebDriver:等待加载JavaScript的复杂页面所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。