如何设置Selenium和ChromeDriver在无头模式下运行

我正在尝试使用xUnit,Selenium和Chrome Canary(无头模式)运行浏览器测试,但我一直收到此错误:

OpenQA.Selenium.WebDriverException The HTTP request to the remote WebDriver server for URL http://localhost:58692/session timed out after 60 seconds. 

这是我的代码:

 var chromeOptions = new ChromeOptions { BinaryLocation = @"C:\Users\\AppData\Local\Google\Chrome SxS\Application\chrome.exe", DebuggerAddress = "127.0.0.1:9222" }; chromeOptions.AddArguments("no-sandbox", "headless", "disable-gpu"); _driver = new ChromeDriver(chromeOptions) {Url = Url}; 

我对C#很陌生,所以我不确定我是否做了一些公然错误的事情,或者我是否只是错过了一个设置。 谷歌上面的错误告诉我,我需要设置调试器地址并使用no-sandbox标志,但似乎都没有帮助。

使用这些版本:

 selenium 3.4 chromedriver 2.29 xunit 2.2 

取出调试器地址使其工作。

 var chromeOptions = new ChromeOptions { BinaryLocation = @"C:\Users\\AppData\Local\Google\Chrome SxS\Application\chrome.exe", }; 

如果其他人在google搜索时会到达这里…

对我有用的是从以下链接下载最新的chrome驱动程序: https : //sites.google.com/a/chromium.org/chromedriver/downloads

快乐编码:)

  case "chrome9515headless": ChromeOptions chromeOptions = new ChromeOptions(); chromeOptions.AddArgument("--headless"); chromeOptions.AddArgument("--disable-gpu"); chromeOptions.AddArgument("--disable-infobars"); chromeOptions.AddArgument("--disable-extensions"); chromeOptions.AddArgument("--window-size=1200,900"); chromeOptions.AddArgument("--disable-browser-side-navigation"); webDriver = new RemoteWebDriver(new Uri("http://127.0.0.1:9515"), chromeOptions.ToCapabilities()); break; case "chrome9515canary": ChromeOptions chromeOptionsCanary = new ChromeOptions(); chromeOptionsCanary.BinaryLocation= @"C:\Users\********\AppData\Local\Google\Chrome SxS\Application\chrome.exe"; //chromeOptionsCanary.AddArgument("--headless"); //chromeOptions.AddArgument("--disable-gpu"); chromeOptionsCanary.AddArgument("--disable-infobars"); chromeOptionsCanary.AddArgument("--disable-extensions"); chromeOptionsCanary.AddArgument("--window-size=1200,900"); chromeOptionsCanary.AddArgument("--disable-browser-side-navigation"); webDriver = new RemoteWebDriver(new Uri("http://127.0.0.1:9515"), chromeOptionsCanary.ToCapabilities()); break;