C# Selenium ChromeDriver 无效的 --log-level 值。无法初始化日志记录

时间:2021-06-22 06:57:07

标签: c# selenium selenium-webdriver selenium-chromedriver

以下代码无效:

ChromeOptions op = new ChromeOptions {
    BinaryLocation = "./chromedriver.exe"
};
op.AddArguments("--disable-logging", "--headless", "--disable-gpu", "--no-sandbox", "--disable-dev-shm-usage");
ChromeDriver driver = new ChromeDriver(op);

错误:

<块引用>

OpenQA.Selenium.WebDriverException HResult=0x80131500 消息=未知错误:Chrome 无法启动:已被杀死。 (未知错误:DevToolsActivePort 文件不存在) (从 chrome 位置 ./chromedriver.exe 开始的进程不再运行,因此 ChromeDriver 假设 Chrome 已崩溃。) 来源=网络驱动程序 堆栈跟踪: 在 OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) 在 OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 参数) 在 OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities requiredCapabilities) 在 OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities requiredCapabilities) 在 OpenQA.Selenium.Chrome.ChromeDriver..ctor(ChromeDriverService 服务,ChromeOptions 选项,TimeSpan commandTimeout) 在 OpenQA.Selenium.Chrome.ChromeDriver..ctor(ChromeOptions 选项) 在 WebScraper.Utility.GetChromeBrowser(String binaryLocation) 在 C:\Users\AB\Documents\Code\CSharp\WebScraper\WebScraper\WebScraper\Utility.cs:line 20 在 WebScraper.Program.d__0.MoveNext() 在 C:\Users\AB\Documents\Code\CSharp\WebScraper\WebScraper\WebScraper\Systems\Program.cs:line 7

最后的控制台输出:

<块引用>

无效的 --log-level 值。 无法初始化日志记录。退出...

我已经在网上尝试了其他答案,现在已经被这个问题困住了两天。我添加的参数,不包括 --headless,是我试图让 WebDriver 开始工作的参数,但无济于事。 下面是 .exe 文件所在的目录: enter image description here

我已尝试使用参数禁用日志记录,但仍然无效。它说它需要一个“DevToolsActivePort”文件,但我不确定如何获取该文件或将它放在哪里。是否可以为我的 selenium 应用程序使用单独的浏览器,而不是使用已安装在计算机上的浏览器?应用程序是否自包含而不是依赖于外部安装? 任何建议都会非常有帮助!

1 个答案:

答案 0 :(得分:0)

我想通了。我需要两个 .exe 文件,一个来自 Chrome 驱动程序,另一个来自 Chrome 浏览器。

安装 Chrome,然后转到它安装的路径(通常是“C:\Program Files\Google”),复制整个“Chrome”文件夹并将其粘贴到应用程序目录中。然后,将 ChromeOptions 的“BinaryLocation”设为您粘贴的“Chrome”文件夹中“chrome.exe”的路径。我的是:“./Chrome/Application/chrome.exe”

然后,使用 ChromeDriverService.CreateDefaultService 静态方法创建一个 ChromeDriverService。将其指向包含“chromedriver.exe”而不是“chrome.exe”的文件夹

将 ChromeOptions 和 ChromeDriverService 输入到 ChromeDriver 的构造函数中,就大功告成了!