切换标签时,带有 headless chrome 的 Selenium 无法获取 url

标签 selenium selenium-webdriver selenium-chromedriver headless-browser google-chrome-headless

我目前正在使用 Specflow 运行 Selenium。

我的一个测试点击了一个按钮,触发了 pdf 文件的下载。
该文件会在新选项卡中自动打开,然后测试会在其中获取 url 并将引用的文件直接下载到 selenium 项目。
当 chrome 驱动程序正常运行但在 headless 浏览器上失败并出现以下错误时,整个过程完美运行:

The HTTP request to the remote WebDriver server for URL http://localhost:59658/session/c72cd9679ae5f713a6c857b80c3515e4/url timed out after 60 seconds. -> The request was aborted: The operation has timed out.



尝试运行 driver.Url 时发生此错误
driver.Url在代码中的其他地方调用工作。只有在 headless 浏览器切换选项卡后才会失败。 (是的,我正在使用驱动程序切换窗口)

作为引用,如果不单击第一页上的按钮并切换选项卡,我将无法获取此 url,因为该 url 是在单击按钮后自动生成的。

最佳答案

我相信您只是将参数用作“--headless”以获得更好的性能,您也应该选择屏幕尺寸。有时,由于屏幕尺寸不合适,它无法检测到您正在寻找的功能。尝试使用此代码或只为大小添加一行。

from selenium import webdriver
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--window-size=1920x1080")
driver = webdriver.Chrome(chrome_options=chrome_options)
不要忘记根据您的需要在“驱动程序”中放置其他参数。

关于切换标签时,带有 headless chrome 的 Selenium 无法获取 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51754092/

相关文章:

java - 如何编写在每个步骤执行后执行的代码

python - Chrome 浏览器从 chromedriver 启动时随机挂起

java - 无法从 Firefox 的下拉菜单中进行选择

c# - 使用 Webinator+Selenium、SpecFlow 和 NUnit 的多浏览器测试

maven - 运行 selenium maven 插件时 firefox 配置文件为 "parent.lock"

java - 使用 WebDriver 单击新打开的选项卡中的链接

c# - 如何使用 C# 在 Selenium WebDriver 中按下 'Esc' 键

javascript - 使用 Selenium 和 PhantomJS 测试 AngularJS 应用程序

java - org.apache.poi.openxml4j.exceptions.InvalidOperationException : Can't open the specified file:

java - 按功能隐藏 Windows 离开/取消弹出窗口