我正在尝试让 Selenium 测试自动化系统针对 headless (headless) Chrome 运行,以便将其移至TeamCity。我还没有运气。当我运行它时,Chrome确实可以无脑地运行(没有浏览器弹出),但是我得到了NoSuchElementException
。当 headless (headless)运行时,自动化将按预期工作。拍摄的快照仅显示一个白色矩形。
我已经对该问题进行了广泛的研究,但是找不到适合我的解决方案。该问题似乎是在https://bugs.chromium.org/p/chromedriver/issues/detail?id=476中报告的,但已标记为已修复。我认为问题可能出在错误的chromedriver,或者错误的chromedriver/Selenium组合,但是我尝试了各种组合,但都没有爱。
我在用:
我的代码是:
...
ChromeOptions headlessOptions = new ChromeOptions();
headlessOptions.addArguments("--start-maximized");
headlessOptions.addArguments("--headless");
driver = new ChromeDriver(headlessOptions);
driver.get(url);
WebElement usernameTextfield = driver.findElement(By.cssSelector(".input.username"));
...
输出为:
Starting ChromeDriver 2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f) on port 41402
Only local connections are allowed.
Nov 01, 2017 10:22:51 AM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":".input.username"}
(Session info: headless chrome=62.0.3202.75)
(Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 6.1.7601 SP1 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
这使我无法将测试自动化作为CI的一部分包含在内,因此我们将不胜感激。
最佳答案
我遇到了同样的问题,本地服务器使用的是自签名证书,这是对我有用的组合:
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
options.addArguments("--disable-gpu");
options.addArguments("--no-sandbox");
options.addArguments("--allow-insecure-localhost");
关于google-chrome - Selenium 测试对 headless (headless) Chrome 的测试失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47061662/