我想尝试无头镀铬,但我遇到了这个问题,我无法在无头模式下启动驱动程序。我关注google documentation。我错过了什么吗?代码执行卡在var browser = new ChromeDriver();
行
这是我的代码:
var chromeOptions = new ChromeOptions
{
BinaryLocation = @"C:\Users\2-as Aukstas\Documents\Visual Studio 2017\Projects\ChromeTest\ChromeTest\bin\Debug\chromedriver.exe",
DebuggerAddress = "localhost:9222"
};
chromeOptions.AddArguments(new List<string>() {"headless", "disable-gpu" });
var browser = new ChromeDriver(chromeOptions);
browser.Navigate().GoToUrl("https://stackoverflow.com/");
Console.WriteLine(browser.FindElement(By.CssSelector("#h-top-questions")).Text);
答案 0 :(得分:40)
<强>更新强>
Chrome版本60已推出,所以你需要做的就是通过Nuget下载Chromdriver和Selenium并使用这个简单的代码,一切都像魅力一样。惊人的。
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
...
var chromeOptions = new ChromeOptions();
chromeOptions.AddArguments("headless");
using (var browser = new ChromeDriver(chromeOptions))
{
// add your code here
}
日期
在Chrome 60正式发布之前,有一个解决方案。您可以下载Chrome Canary并使用无头。安装完成后设置BinaryLocation指向chrome canary也注释掉DebuggerAddress行(它强制chrome超时):
var chromeOptions = new ChromeOptions
{
BinaryLocation = @"C:\Users\2-as Aukstas\AppData\Local\Google\Chrome SxS\Application\chrome.exe",
//DebuggerAddress = "127.0.0.1:9222"
};
chromeOptions.AddArguments(new List<string>() { "no-sandbox", "headless", "disable-gpu" });
var _driver = new ChromeDriver(chromeOptions);
答案 1 :(得分:4)
对于那些没有获得ChromeDriver参考的人。 使用此步骤:
提取,您应该看到:Selenium.WebDriverBackedSelenium.dll,ThoughtWorks.Selenium.Core.dll,WebDriver.dll和WebDriver.Support.dll
通过&#34;添加参考&#34;
现在你可以使用它了:
String url = "http://www.google.com";
var chromeOptions = new ChromeOptions();
chromeOptions.AddArguments(new List<string>() {
"--silent-launch",
"--no-startup-window",
"no-sandbox",
"headless",});
var chromeDriverService = ChromeDriverService.CreateDefaultService();
chromeDriverService.HideCommandPromptWindow = true; // This is to hidden the console.
ChromeDriver driver = new ChromeDriver(chromeDriverService, chromeOptions);
driver.Navigate().GoToUrl(url);
====
如果您在运行后仍然遇到没有ChromeDriver.exe文件的错误,请尝试通过nuget添加Selenium.WebDriver.ChromeDriver,WebDriver.ChromeDriver,WebDriver.ChromeDriver.win32,Selenium.Chrome.WebDriver。
答案 2 :(得分:2)
作为替代方案:
通过NuGet添加2个库,如下图所示。
请尝试以下代码:
String url = "http://www.google.com";
var chromeOptions = new ChromeOptions();
chromeOptions.AddArguments(new List<string>() { "headless" });
var chromeDriverService = ChromeDriverService.CreateDefaultService();
ChromeDriver driver = new ChromeDriver(chromeDriverService, chromeOptions);
driver.Navigate().GoToUrl(url);
答案 3 :(得分:1)
您正在运行什么操作系统?我在developers.google.com/web/updates/2017/04/headless-chrome上看到,在Chrome 60之前无法在Windows上使用无头。
答案 4 :(得分:0)
下面,我给出了如何将Firefox和Chrome浏览器的headless设置为true。
FirefoxOptions ffopt = new FirefoxOptions();
FirefoxOptions option = ffopt.setHeadless(true);
WebDriver driver = new FirefoxDriver(option);
ChromeOptions coptions = new ChromeOptions();
ChromeOptions options = coptions.setHeadless(true);
WebDriver driver = new ChromeDriver(options);