无头模式下Chromedriver出现问题

4
我想知道是否有人在“无头”模式下使用chromedriver时遇到过问题。在我的情况下,当以此模式运行selenium测试时,执行结果会被无限期地停止,没有完成测试并开始执行下一个测试用例,也没有给出相关的异常。我想知道是否有人可以想到可能发生了什么。我猜测这个问题是由webdriver的静态初始化引起的。
我的日志显示了这个序列,测试用例没有完全执行,下一个测试用例就被调用。
这种情况在几个测试用例之后持续发生,然后才开始其他测试用例的完整执行。我正在运行大约50个测试用例。没有实现多线程。

没有异常,也没有堆栈跟踪。 - Kanchan Ruia
请提供关于您的代码更多的信息。您能否展示一下您的驱动选项? - sayhan
@KanchanRuia 更新问题并提供错误堆栈跟踪信息。 - undetected Selenium
我已经更新了我的问题,如果这有帮助的话。 - Kanchan Ruia
我在之前的工作中遇到了这个问题,出现在Windows 7上,但在Windows 10上没有。现在我无法再次复现它。 - Mate Mrše
你可能想切换到FireFox驱动程序。我之前使用无头Chrome时也遇到了问题,但一旦我切换到FireFox后问题就消失了。 - Zvi
2个回答

15

我注意到在我的情况下它运行得非常完美。您需要在无头模式下添加窗口大小作为参数。我不知道您正在使用哪种语言。

如果您正在使用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"); - Kanchan Ruia
1
@KanchanRuia:options.addArguments("window-size=1366,768"); - KunduK
如果不起作用,您需要增加窗口大小的尺寸。 - KunduK
1
@KunduK 谢谢。你的解决方案对我很有用。我正在使用Python,我遇到了同样的问题。只需要进行非常轻微的编辑(我相信这是一个打字错误):在Python解决方案中需要删除末尾的分号。 - Priya
@Priya:谢谢。我已经更新了。 - KunduK

1
在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")

如果您不是在无头模式下工作,您可以使用以下方法:

from selenium import webdriver


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接