selenium - 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
解决方案
您可以为浏览器设置页面加载策略,这将使页面不会等待完整页面加载,以便执行其他 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”策略。
推荐阅读
- c - C中使用队列和邻接表实现BFS
- python - 从 Keras 的 imdb 数据集恢复原始文本 - 再次
- docker - 容器化工具可以在本地机器上运行吗?
- regex - python中匹配url的正则表达式
- python - 如何在python中将文本的某一部分从一个文件复制到另一个文件
- docker - Ansible/Rundeck 中的 Propper 容器日志监控
- postgresql - 为什么在索引扫描期间读取了这么多页面(Postgres 11.2)?
- python - 如何在模型 Django 中定义特殊归档
- latex - 如何将乳胶代码放在 kable 标题中?
- web-scraping - 网页抓取:匹配不同来源上具有不同名称的相同项目