【问题标题】:Problem with Chromedriver in Headless mode无头模式下 Chromedriver 的问题
【发布时间】:2022-01-28 14:24:40
【问题描述】:

我想知道是否有人在“无头”模式下使用 chromedriver 时遇到过问题。在我的情况下,在这种模式下运行 selenium 测试时,相同的执行被无限期地停止,没有完成测试并开始执行下一个测试用例,也没有给出相关的异常。我想知道是否有人可以知道可能发生的事情。我猜这个问题是由于 webdriver 的静态初始化引起的

public static WebDriver createInstance(WebDriver driver, String browserName){..}

我的日志显示这个序列测试用例没有完全执行,下一个测试用例被调用

- INFO learning.helpers.DriverInitialisor - createInstance - 111 - Running Chrome browser in headless mode - INFO learning.helpers.DriverInitialisor - createInstance - 126 - Launching Chrome browser in local mode - INFO learning.tests.ExpandFAQ - expandAndCollapseFAQ - 30 - launching the ION Learning Hub Application - INFO learning.tests.ExpandFAQ - expandAndCollapseFAQ - 35 - Open a searched product - INFO learning.helpers.DriverInitialisor - createInstance - 111 - Running Chrome browser in headless mode - INFO learning.helpers.DriverInitialisor - createInstance - 126 - Launching Chrome browser in local mode - INFO learning.tests.CollapseFAQ - collapseFAQ - 30 - launching the ION Learning Hub Application - INFO learning.tests.CollapseFAQ - collapseFAQ - 35 - Open a searched product

这会在少数测试用例中继续,然后对于其他测试用例再次开始完整执行。我正在运行大约 50 个测试用例。没有实现多线程。

【问题讨论】:

  • 没有堆栈跟踪也不例外。
  • 请向我们提供有关您的代码的更多信息。您能告诉我们您的司机选项吗?
  • @KanchanRuia 使用错误堆栈跟踪更新问题。
  • 如果这有帮助,我已经更新了我的问题
  • 我在上一份工作中遇到了这个问题,在 Windows 7 上,但在 Windows 10 上没有。现在我无法重现它。

标签: java selenium webdriver selenium-chromedriver headless


【解决方案1】:

我注意到在我的情况下并且运行良好。您需要在无头模式中添加窗口大小作为参数。我不知道您正在使用哪种语言。

如果您使用的是python,请添加此内容。

  chrome_options = webdriver.ChromeOptions()
  chrome_options.add_argument('--headless')
  chrome_options.add_argument('window-size=1920x1080')

如果您使用的是java,请添加此内容。

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("headless");
chromeOptions.addArguments("window-size=1920,1080");

请试试这个,如果可行,请告诉我。

【讨论】:

  • 嗨@Kajal Kundu 我正在使用Java。我已经使用了上面提到的代码 options.addArguments("headless") options.addArguments("window-size=1366x768"); options.addArguments("--incognito");
  • @KanchanRuia : options.addArguments("window-size=1366,768");
  • 如果不工作,你需要增加你的窗口大小尺寸。
  • @KunduK 谢谢。你的解决方案对我有用。我正在使用python,我遇到了同样的问题。只是一个非常轻微的编辑(我确定这是一个错字):最后的分号需要在 python 解决方案中删除
  • @Priya:谢谢。我也更新了。
【解决方案2】:

Python 中,headless 模式下的 chrome 驱动程序有时需要窗口大小。特别是当您想要执行某些操作并浏览不同的页面时。不提供窗口大小会以任意大小打开驱动程序。因此,所需的元素不可见。

from selenium.webdriver.chrome.options import Options


chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument("--window-size=1920,1080")

如果您不是在headless 模式下工作,您可以改用:

from selenium import webdriver


driver = webdriver.Chrome(executable_path = "./chromedriver", options = chrome_options)
driver.maximize_window()

【讨论】:

    猜你喜欢
    • 2018-08-06
    • 2017-12-21
    • 2017-12-09
    • 2019-09-07
    • 2014-12-31
    • 1970-01-01
    • 2018-06-11
    • 2019-10-31
    • 1970-01-01
    相关资源
    最近更新 更多