centos服务器上selenium 报错的解决办法

报错代码:

raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally.
(unknown error: DevToolsActivePort file doesn't exist)
(The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

解决办法:

在启动ChromeDriver时,添加no-sandbox参数可以解决一些在Linux系统中运行Selenium时遇到的问题。no-sandbox的作用是让Chrome在非沙盒环境下运行。默认情况下,Chrome以沙盒方式运行,这会带来一些限制,可能导致某些Selenium测试无法正常执行。添加no-sandbox参数可以避免这些限制,让Chrome以无沙盒模式运行。常见的好处包括:1. 允许Selenium访问USB设备。默认沙盒模式下无法访问。2. 避免文件权限问题。默认沙盒模式下,Chrome只能访问自己的文件系统空间,可能导致某些测试失败。no-sandbox可以绕过这个限制。3. 便于调试。无沙盒模式下,可以方便地调试Chrome和Selenium。所以,如果在Linux系统下运行Selenium测试,遇到文件权限问题或USB设备访问问题,添加no-sandbox参数是一个很有效的解决方法。在各语言中,可以这样添加no-sandbox参数:Python:
python
options = webdriver.ChromeOptions()
options.add_argument("no-sandbox")
driver = webdriver.Chrome(options=options)
Java:
java
ChromeOptions options = new ChromeOptions();
options.addArguments("no-sandbox");
WebDriver driver = new ChromeDriver(options);
C#:
csharp
ChromeOptions options = new ChromeOptions();
options.AddArgument("no-sandbox");
IWebDriver driver = new ChromeDriver(options);

最新版122chromedriver驱动下载地址:

https://googlechromelabs.github.io/chrome-for-testing/

查看版本号 cmd  chromedriver --version

 

THE END