无头模式下的 Selenium FindElement 和 Chrome

abb*_*33f 5 selenium selenium-chromedriver google-chrome-headless

在遵循此建议并仅使用这些参数以无头模式启动 chromedriver.exe 后

 options.AddArgument("headless");
 options.AddArgument("window-size=1280,960");
Run Code Online (Sandbox Code Playgroud)

chromedriver 以隐形方式打开。但是 Selenium 的FindElement()命令在无头 Chrome 页面上找不到任何内容。相反,它抛出这个异常:

WebDriver.dll 中发生了“OpenQA.Selenium.NoSuchElementException”类型的异常,但未在用户代码中处理

附加信息:没有这样的元素:无法定位元素:

Q1:有没有人在 Chrome 的 headless 模式下成功运行 Selenium 命令?

问题 2:您是否能够FindElement与在无头模式下运行的 chromedriver一起使用?如果是,你是如何做到的?


阅读更多内容后,也许需要遵循这些思路?将此添加到 Chrome 启动选项中,然后将 chromedriver 连接到它?
"remote-debugging-port=9222"
但是使用该选项 IWebDriver 和 chromedriver 不会打开。


背景信息:回答,你为什么要这样做?主要原因是测试作为 CI 的一部分运行。这些是在 VM 上运行的测试,可能不支持 1080p 显示器。如果我们以无头模式运行它并以这种方式设置分辨率。

小智 2

在您的主类中添加以下代码行:

ChromeOptions options = new ChromeOptions(); 
options.setHeadless(true); 
options.addArguments("--window-size=1920,1080"); 
options.addArguments("--disable-gpu"); 
options.addArguments("--disable-extensions"); options.setExperimentalOption("useAutomationExtension", false); options.addArguments("--proxy-server='direct://'"); 
options.addArguments("--proxy-bypass-list=*"); 
options.addArguments("--start-maximized");
options.addArguments("--headless"); 
WebDriver driver = new ChromeDriver(options);
Run Code Online (Sandbox Code Playgroud)