【问题标题】:Firefox not completing page load after click sent by selenium on sauce点击 selenium on sauce 后,Firefox 未完成页面加载
【发布时间】:2018-07-24 04:09:37
【问题描述】:

使用 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"}]

这样就成功并找到了链接。然后我再也看不到那个元素上的click 事件。之前的点击事件,导航命令成功。

当我观看会话的视频播放时,我看到它单击了给定的链接并在 Firefox 中加载了新页面,但右上角的微调器(实际上是一个来回移动的小点)从未停止。

我自己无法使用 Firefox 进行复制,甚至无法通过在 Saucelabs 上进行手动测试,您可以通过 Web 控制浏览器和 VM。

我想知道是否有一些正在运行的同步代码无法解析。但我不知道如何找到它。开发者工具似乎无法显示当前的阻塞代码。

【问题讨论】:

    标签: javascript selenium firefox selenium-webdriver saucelabs


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢!我已经离开这个项目,没有机会检查这是否能解决我的问题,但听起来不错。
    猜你喜欢
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    • 2017-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多