Selenium ChromeDriver 给出“InitializeSandbox() 在进程 GPU 进程中使用多个线程调用”错误

kam*_*yrb 15 java ubuntu selenium selenium-chromedriver selenium-webdriver

我正在尝试使用 selenium chromedriver 打开一个网站。我已经添加了一些我在其他类似问题中看到的论点,但它没有解决问题。我基本上有这个代码:

 String baseUrl = "https://somesite.com";
 System.setProperty("webdriver.chrome.driver", "/usr/bin/google-chrome");
 ChromeDriverService service = ChromeDriverService.createDefaultService();
 ChromeOptions options = new ChromeOptions();
 options.addArguments("--start-maximized");
 options.addArguments("--disable-infobars");
 options.addArguments("--disable-gpu");
 options.addArguments("--disable-software-rasterizer");
 options.addArguments("no-sandbox");
 options.addArguments("headless");
 options.addArguments("--enable-native-gpu-memory-buffers");

 driver = new ChromeDriver(service, options);
 driver.get(baseUrl);
Run Code Online (Sandbox Code Playgroud)

当我运行上面的代码时,chrome 打开但页面没有改变。它还给出了这个输出:

[61263:61263:0903/005049.885829:ERROR:sandbox_linux.cc(374)] InitializeSandbox() called with multiple threads in process gpu-process.
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况?

注意:我的操作系统是ubuntu 20.04。

Deb*_*anB 16

这个错误信息...

\n
ERROR:sandbox_linux.cc(374)] InitializeSandbox() called with multiple threads in process gpu-process.\n
Run Code Online (Sandbox Code Playgroud)\n

...是由于 Chrome\xe2\x80\x99s GPU 使用而尝试在 Linux 中运行 Google Chrome 时出现的常见错误。

\n

首先,System.setProperty()line 接受ChromeDriver的绝对路径的 webdriver.chrome.driver。所以而不是:

\n
System.setProperty("webdriver.chrome.driver", "/usr/bin/google-chrome");\n
Run Code Online (Sandbox Code Playgroud)\n

你需要:

\n
System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");\n
Run Code Online (Sandbox Code Playgroud)\n
\n

尾奏

\n

一般来说,可以通过使用以下标志避免 GPU 硬件加速来解决此错误:

\n
    \n
  • --disable-gpu:禁用 GPU 硬件加速。如果软件渲染器未到位,则 GPU 进程将不会启动
  • \n
  • --disable-software-rasterizer:禁用 3D 软件光栅器的使用
  • \n
\n

代码片段:

\n
options.addArguments("--disable-gpu");\noptions.addArguments("--disable-software-rasterizer");\n
Run Code Online (Sandbox Code Playgroud)\n