当在saucelabs.com上远程运行时,使用硒webdriver在本地完美运行的测试超时。相同的测试适用于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。
我想知道是否有一些正在运行的同步代码无法解决。但我不知道如何找到答案。开发人员工具似乎没有任何办法显示当前被阻止的代码。
最佳答案
加载页面时,Selenium正在等待document.readyState
为complete
。
有时,某些资源的加载可能会停滞不前-当它试图获取大文件且连接不良时,由于代理服务器导致资源不可访问时,当提供该资源的服务关闭时,依此类推。
我在Firefox中遇到了同样的问题,并使用eager
页面加载策略解决了它。
使用此加载策略,Selenium将等待document.readyState
被设置为interactive
-可能不会加载某些资源,但是页面的主要元素已加载,您可以用常见的方式与它们交互。
DesiredCapabilities caps = DesiredCapabilities.firefox();
caps.setCapability(CapabilityType.PAGE_LOAD_STRATEGY, "eager");
关于javascript - Firefox对 Selenium 的点击发送后,Firefox无法完成页面加载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48772739/