我正在尝试使用无头 Chrome 运行我的 Selenium 测试自动化,以便我可以将其移动到 TeamCity。但是我没有成功。当我运行它时,Chrome 确实似乎是以无头模式运行的(没有浏览器弹出),但是我得到了一个 NoSuchElementException
。在非无头模式下运行时,自动化按预期工作。拍摄的快照只显示一个白色矩形。
我已经广泛地研究了这个问题,但我还没有找到适合我的解决方案。似乎这个问题在https://bugs.chromium.org/p/chromedriver/issues/detail?id=476中报告过,但已被标记为已修复。我认为问题可能是错误的 chromedriver 或者是错误的 chromedriver/selenium 组合,但我已经尝试了各种组合,都没有成功。
我正在使用:
- selenium-java 3.6.0
- chromedriver 2.33.506120
- Windows 7 Enterprise Service Pack1, 64-bit
我的代码是:
...
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的一部分包含,因此非常感谢任何帮助。
url
是什么?它是https协议吗?并且它使用自签名证书吗? - SiKing