在 Linux 上使用 Chrome 无头启动 Selenium 会添加许多命令行参数,其中一些与我手动添加的参数相矛盾

Starting Selenium with Chrome on Linux headless adds many command line arguments, and some of them contradicting my manually added arguments

提问人:g.pickardou 提问时间:11/9/2023 更新时间:11/9/2023 访问量:43

问:

我正在使用 chrome 和 chromedriver 119...版本,Chromedriver 是使用 Selenium-Manager 下载的,以匹配确切的 Chrome 版本。

在 Linux 上使用 Chrome 启动 Selenium Headless 会添加许多命令行参数。我完全同意这一点,并且确实理解其中许多用于允许使用 chromedriver 控制 chrome,并且根据浏览器测试最佳实践。

但是,它们似乎与我手动添加的论点相矛盾。我在这里检查了启动的google-chrome进程命令行:

--headless=new (this is mine)
--disable-infobars (this is mine)
--hide-crash-restore-bubble (this is mine)
--noerrdialogs (this is mine)
--user-data-dir=/tmp/.chrome/opl01 (this is mine)
--window-size=1920,1080 (this is mine, I would like to have the desktop layout test use cases)
--start-maximized (mine, could be obsolete)
--remote-debugging-port=9231 (this is mine, I want deterministic port, because I am remote devtooling from an other machine, so must create SSH tunnel, random ports would be inconvenient)

--allow-pre-commit-input 
--disable-background-networking 
--disable-client-side-phishing-detection 
--disable-default-apps 
--disable-hang-monitor 
--disable-popup-blocking 
--disable-prompt-on-repost 
--disable-sync 
--enable-automation 
--enable-logging 
--log-level=0 
--no-first-run 
--no-service-autorun 
--password-store=basic 
--test-type=webdriver 
--use-mock-keychain 
--ozone-platform=headless 
--ozone-override-screen-size=800,600 
--use-angle=swiftshader-webgl data:

我特别担心这两个。这似乎覆盖了我的 1920x1080 意图。这似乎超出了我的意图,我想使用新的无头模式......ozon-...ozone-override-screen-size=800,600ozone-platform=headless

Windows 上的代码完全相同,也使用 119...成对的 chrome 和 chromedriver 不会自动添加其中的许多参数,尤其是不会ozon...

附加信息:

我使用以下 C# 代码启动 Selenium:

var options = new ChromeOptions();
options.AddArgument("headless=new");
options.AddArgument("window-size=1920,1080");

options.AddArgument("hide-crash-restore-bubble"); // This can help to disable the "Restore pages?" popup
options.AddArgument("disable-infobars"); // This can also help to disable other popups
options.AddArgument("noerrdialogs");
options.AddArgument("user-data-dir=mydir");
options.AddArgument("remote-debugging-port=9230");
var path = ""; // chromedriver is in the same folder as the executable  
var driver = new ChromeDriver(path, options);
谷歌-chrome selenium-webdriver selenium-chromedriver

评论


答: 暂无答案