当在picklabs.com上远程运行时,在本地使用selenium webdriver完美运行的测试会超时。同样的测试适用于Chrome(本地和酱油)。
从客户端代码的角度来看,以下代码中的click
永远不会返回:
var someLink = await driver.findElement(By.className('some-class'));
await someLink.click()
我在测试框架中使用jest
,超时为60秒,所以在客户端,我在一分钟后得到超时错误。
当我登录酱汁并查看它处理的命令列表时,我看到:
POST elements
带参数:
{"using":"css selector","value":".some-class"}
返回的身体是:
[{"ELEMENT":"2"}]
这样成功并找到链接。然后,我从未在该元素上看到click
事件。先前的点击事件和导航命令都是成功的。
当我观看会话的视频播放时,我看到它在Firefox中单击给定链接和新页面加载,但右上角的微调器(实际上是一个小点来回)从不停止。
我自己无法使用Firefox进行复制,甚至无法通过Saucelabs上的手动测试进行复制,您可以通过网络控制浏览器和VM。
我想知道是否有一些同步代码正在运行但是没有解决。但我无法弄清楚如何找到它。开发人员工具似乎无法显示当前阻止的代码。
答案 0 :(得分:1)
正在加载页面时,Selenium正在等待document.readyState
成为complete
。
有时某些资源的加载可能会停滞不前-当它试图获取大文件且连接不良时,由于代理服务器而无法访问资源时,当提供该资源的服务中断时,等等。
我在Firefox中遇到了同样的问题,并使用eager
页面加载策略解决了该问题。
借助这种加载策略,Selenium将等待document.readyState
被interactive
-可能不会加载某些资源,但是页面的主要元素已加载,您可以用常见的方式与它们进行交互。
DesiredCapabilities caps = DesiredCapabilities.firefox();
caps.setCapability(CapabilityType.PAGE_LOAD_STRATEGY, "eager");