点击后发送的硒点击后,Firefox没有完成页面加载

时间:2018-02-13 17:50:34

标签: javascript selenium firefox selenium-webdriver saucelabs

当在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。

我想知道是否有一些同步代码正在运行但是没有解决。但我无法弄清楚如何找到它。开发人员工具似乎无法显示当前阻止的代码。

1 个答案:

答案 0 :(得分:1)

正在加载页面时,Selenium正在等待document.readyState成为complete。 有时某些资源的加载可能会停滞不前-当它试图获取大文件且连接不良时,由于代理服务器而无法访问资源时,当提供该资源的服务中断时,等等。

我在Firefox中遇到了同样的问题,并使用eager页面加载策略解决了该问题。 借助这种加载策略,Selenium将等待document.readyStateinteractive-可能不会加载某些资源,但是页面的主要元素已加载,您可以用常见的方式与它们进行交互。

DesiredCapabilities caps = DesiredCapabilities.firefox();
caps.setCapability(CapabilityType.PAGE_LOAD_STRATEGY, "eager");