以下代码无效:
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 文件所在的目录:
我已尝试使用参数禁用日志记录,但仍然无效。它说它需要一个“DevToolsActivePort”文件,但我不确定如何获取该文件或将它放在哪里。是否可以为我的 selenium 应用程序使用单独的浏览器,而不是使用已安装在计算机上的浏览器?应用程序是否自包含而不是依赖于外部安装? 任何建议都会非常有帮助!
答案 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 的构造函数中,就大功告成了!