点击 selenium on sauce 后 Firefox 没有完成页面加载

Firefox not completing page load after click sent by selenium on sauce

一项在本地与 selenium webdriver 完美配合的测试在 运行 远程 saucelabs.com 上超时。同样的测试适用于 Chrome(本地和酱汁)。

从客户端代码来看,以下代码中的 click 永远不会返回:

var someLink = await driver.findElement(By.className('some-class'));
await someLink.click()

我将 jest 用于测试框架,超时为 60 秒,所以在客户端,我在一分钟后收到超时错误。

当我登录 sauce 并查看它处理的命令列表时,我看到:

POST elements

带参数:

{"using":"css selector","value":".some-class"}

返回的正文是:

[{"ELEMENT":"2"}]

这样就成功了,找到了link。然后我再也看不到该元素上的 click 事件。先前的点击事件和导航命令成功。

当我观看 session 的视频播放时,我看到它点击给定的 link 并在 Firefox 中加载新页面,但是旋转器(实际上是一个来回移动的小点) 在右上角永远不会停止。

我自己无法用 Firefox 重现,甚至无法通过 Saucelabs 上的手动测试,您可以通过 Web 控制浏览器和 VM。

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

加载页面时,Selenium 正在等待 document.readyState 变为 complete。 有时某些资源的加载可能会卡住 - 当它试图获取大文件但连接很差时,当资源由于代理而无法访问时,当提供此资源的服务已关闭时,等等。

我在使用 Firefox 时遇到了同样的问题,并使用 eager 页面加载策略解决了这个问题。 使用此加载策略,Selenium 将等待 document.readyState 变为 interactive - 某些资源可能未加载,但页面的主要元素已加载,您可以以常用方式与它们交互。

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