无法在Linux服务器上运行Selenium 4.13.0和Python 3

问题描述 投票:0回答:1

我在 Python 中运行 Selenium 脚本没有任何问题。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options


options = Options()
options.page_load_strategy = 'eager'
options.add_argument('--headless=new')
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(options=options)

我的chrome版本是116.0.5845.179。从 selenium 4.10.0 开始,驱动程序管理器已完全集成,并将根据需要静默下载驱动程序。不再需要手动安装 Chrome 驱动程序。所以,我的笔记本电脑上没有安装 chrome 驱动程序。

但是,当我在 Linux 服务器上执行相同操作时,浏览器无法启动。 Linux服务器是Ubuntu,没有图形用户界面。我在服务器上安装了版本117.0.5938.149的chrome。我运行脚本时收到以下错误:

raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: Chrome failed to start: exited normally.
  (session not created: DevToolsActivePort file doesn't exist)
  (The process started from chrome location /opt/google/chrome/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

当我尝试在服务器上的终端上运行“google-chrome”时,收到以下错误:

[34407:34407:1008/225549.976145:ERROR:zygote_host_impl_linux.cc(100)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.

除了我无法运行 chrome 之外,错误消息并没有告诉我太多信息。 如何在服务器上以浏览器无头模式运行脚本?

linux google-chrome selenium-webdriver selenium-chromedriver ubuntu-server
1个回答
0
投票

我通过将以下两行添加到

options

解决了这个问题
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
© www.soinside.com 2019 - 2024. All rights reserved.