首页 > 解决方案 > pageLoadTimeout 在 Selenium 中不起作用 - Java

问题描述

我正在 linux 主机中测试一个网站。我正在访问的页面无限加载,所以我试图为 selenium 设置 pageLoadTimeout。Firefox 被正确触发,但 URL 没有加载/导航/添加到 url 栏中。只是空白的 Firefox 窗口。我也没有看到任何错误。

WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().pageLoadTimeout(2, TimeUnit.SECONDS);
driver.get("http://www.example.com");

但是,如果我删除driver.manage().timeouts().pageLoadTimeout(2, TimeUnit.SECONDS);代码工作正常

硒版本:3.14.0;

gecko 驱动程序:18 - linux(用 gecko 16,17 测试也是同样的问题)

浏览器:firefox-52

操作系统/平台:Linux

如果出现这种问题,我如何确保我的驱动程序在 5 分钟后自行退出。主机将仅支持 firefox 52。

我检查了这个链接,但没有解决我的问题。

谢谢Jk

标签: seleniumwebdriverselenium-firefoxdriverpageloadtimeout

解决方案


您可以为浏览器设置页面加载策略,这将使页面不会等待完整页面加载,以便执行其他 Selenium 命令。下面是 Java 中的示例代码片段。支持三个值:

普通的

这种策略导致 Selenium 等待整个页面加载(下载和解析 html 内容和子资源)。

渴望的

这种策略导致 Selenium 等待 DOMContentLoaded 事件(仅下载和解析 html 内容)。

没有任何

此策略导致 Selenium 在完全接收到初始页面内容(已下载 html 内容)后立即返回。

默认情况下,当 Selenium 加载页面时,它遵循正常的pageLoadStrategy。

DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability("pageLoadStrategy", "eager");
FirefoxOptions opt = new FirefoxOptions();
opt.merge(caps);
WebDriver driver = new FirefoxDriver(opt);
driver.get("https://www.google.com/");

如果您只对页面的 HTML 感兴趣,最好使用“eager”策略。


推荐阅读