我创建了一个使用 Selenium 的应用程序,使用 .NetCore 在 Linux 上使用它,实际上这是我的代码实现:
公开课程序{公共静态异步任务 Main(string[] args){//chrome的设置var chromeOpts = new ChromeOptions();chromeOpts.AddArgument("headless");chromeOpts.AddArgument("no-sandbox");//获取chrome驱动所在的汇编路径字符串 codeBase = Assembly.GetExecutingAssembly().CodeBase;UriBuilder uri = new UriBuilder(codeBase);字符串路径 = Uri.UnescapeDataString(uri.Path);路径 = Path.GetDirectoryName(路径);var driver = new ChromeDriver(path, chromeOpts, TimeSpan.FromSeconds(180));}}
如您所见,我使用 Chrome 作为驱动程序,我下载了它
似乎 Selenium 无法启动应用程序.查看我得到的异常:
<块引用>找不到 Chrome 二进制文件
很遗憾,我在网上没有找到类似的东西,有人可以帮助我吗?
提前致谢.
更新
我刚刚在我的 linux 机器上重新安装了 Chrome
,现在上面的错误消失了,但是现在还有另一个问题,事实上我得到了这个错误:
OpenQA.Selenium.WebDriverException:未知错误:Chrome 无法启动:异常退出(驱动程序信息:chromedriver=2.9.248304,platform=Linux 4.4.0-130-generic x86_64)在 OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(响应错误响应)在 OpenQA.Selenium.Remote.RemoteWebDriver.Execute(字符串 driverCommandToExecute,Dictionary`2 参数)在 OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities)在 OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor,ICapabilities desiredCapabilities)在 OpenQA.Selenium.Chrome.ChromeDriver..ctor(ChromeDriverService 服务,ChromeOptions 选项,TimeSpan 命令超时)在 OpenQA.Selenium.Chrome.ChromeDriver..ctor(String chromeDriverDirectory, ChromeOptions options, TimeSpan commandTimeout) 在 ODS.Program.Main(String[] args)
这个错误信息...
OpenQA.Selenium.WebDriverException:未知错误:Chrome 启动失败:异常退出
...暗示 ChromeDriver 无法启动/生成新的 WebBrowser 即 Chrome 浏览器 会话.
您的主要问题是您使用的二进制文件版本之间的不兼容性,如下所示:
所以 ChromeDriver 版本 (v2.33) 和最近的 Chrome 浏览器 版本 (vVersion68.0)
@Test
.您可以在以下位置找到一些相关讨论:
I created an application that use Selenium using .NetCore for use it on Linux, actually this is my code implementation:
public class Program
{
public static async Task Main(string[] args)
{
//Settings for chrome
var chromeOpts = new ChromeOptions();
chromeOpts.AddArgument("headless");
chromeOpts.AddArgument("no-sandbox");
//Get assembly path where chrome driver is located
string codeBase = Assembly.GetExecutingAssembly().CodeBase;
UriBuilder uri = new UriBuilder(codeBase);
string path = Uri.UnescapeDataString(uri.Path);
path = Path.GetDirectoryName(path);
var driver = new ChromeDriver(path, chromeOpts, TimeSpan.FromSeconds(180));
}
}
as you can see I am using as driver Chrome, I downloaded it here, I also added the driver inside the folder of the assembly, in this way the ChromeDriver knows already where to search it.
On linux I changed the folder permission using chmod -R 777, but when I run my Dotnet application I get this:
Seems that Selenium cannot start the application. Looking at the Exception I get:
Cannot find Chrome binary
Unfortunately I didn't find anything similar on the web, someone could help me?
Thanks in advance.
UPDATE
I Just reinstalled Chrome
on my linux machine and now the error above went away, but there is another problem now, infact I get this error:
OpenQA.Selenium.WebDriverException: unknown error: Chrome failed to start: exited abnormally (Driver info: chromedriver=2.9.248304,platform=Linux 4.4.0-130-generic x86_64)
at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities)
at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities)
at OpenQA.Selenium.Chrome.ChromeDriver..ctor(ChromeDriverService service, ChromeOptions options, TimeSpan commandTimeout)
at OpenQA.Selenium.Chrome.ChromeDriver..ctor(String chromeDriverDirectory, ChromeOptions options, TimeSpan commandTimeout) at ODS.Program.Main(String[] args)
This error message...
OpenQA.Selenium.WebDriverException: unknown error: Chrome failed to start: exited abnormally
...implies that the ChromeDriver was unable to initiate/spawn a new WebBrowser i.e. Chrome Browser session.
Your main issue is the incompatibility between the version of the binaries you are using as follows:
So there is a clear mismatch between the ChromeDriver version (v2.33) and the recent Chrome Browser version (vVersion 68.0)
@Test
.You can find a couple of relevant discussions in:
这篇关于OpenQA.Selenium.WebDriverException:未知错误:Chrome 无法启动:在 Linux 上通过 Selenium start 执行测试时异常退出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!