WebDriverException:消息:服务chromedriver意外退出。状态代码是:127

时间:2018-03-16 14:26:46

标签: python google-chrome selenium selenium-webdriver selenium-chromedriver

我想在服务器上使用selenium构建我的抓取工具。

因此我在我的Ubuntu17.10服务器上安装/下载了所需的依赖项 - 例如chromedriver,chromium-browser等

但是,当我运行以下代码时:

driver = webdriver.Chrome()

它返回以下错误:

---------------------------------------------------------------------------
WebDriverException                        Traceback (most recent call last)
<ipython-input-14-2cdab8938403> in <module>()
----> 1 driver = webdriver.Chrome()

/home/zachary/.local/lib/python3.6/site-packages/selenium/webdriver/chrome/webdriver.py in __init__(self, executable_path, port, options, service_args, desired_capabilities, service_log_path, chrome_options)
     66             service_args=service_args,
     67             log_path=service_log_path)
---> 68         self.service.start()
     69 
     70         try:

/home/zachary/.local/lib/python3.6/site-packages/selenium/webdriver/common/service.py in start(self)
     96         count = 0
     97         while True:
---> 98             self.assert_process_still_running()
     99             if self.is_connectable():
    100                 break

/home/zachary/.local/lib/python3.6/site-packages/selenium/webdriver/common/service.py in assert_process_still_running(self)
    109             raise WebDriverException(
    110                 'Service %s unexpectedly exited. Status code was: %s'
--> 111                 % (self.path, return_code)
    112             )
    113 

WebDriverException: Message: Service chromedriver unexpectedly exited. Status code was: 127

这是什么意思,它很兴奋..?

我无法得到该错误代码的初衷以及从何处开始修复它。

看起来非常罕见。

也许相关:

我在桌面上安装了ubuntu桌面17.10但无法启动GUI启动。因此我只使用终端,但它到目前为止工作良好。 我已经从我的mac到服务器桌面安装了ssh和远程控制jupyter笔记本,这些错误来自它。 希望此信息与解决此错误相关,否则将中止。

10 个答案:

答案 0 :(得分:17)

似乎chromedriver需要一些额外的库。这解决了我的问题:

apt-get install -y libglib2.0-0=2.50.3-2 \
    libnss3=2:3.26.2-1.1+deb9u1 \
    libgconf-2-4=3.2.6-4+b1 \
    libfontconfig1=2.11.0-6.7+b1

我正在使用docker容器而不是没有X / GUI的服务器/ VM进行类似的设置。

为了确定需要哪些依赖项,我尝试迭代地从命令行运行它,如:/opt/chromedriver/2.33/chromedriver --version一遍又一遍。

然后在eache时间我使用apt-cache search <STUFF>apt-cache madison <STUFF>之类的命令来确定deb 2.33所需的chromedriver包的确切版本(在我的情况下,但是我想类似的东西适用于任何版本的chromedriver)。

答案 1 :(得分:6)

在我的VPS上使用硒/ chromedriver时,我遇到了相同的错误。我安装了chromium-browser,问题消失了。

sudo apt-get install -y chromium-browser

也许不是chromium-browser是必需的,但是软件包是和它一起安装的。但是,那是一个快速修复。

答案 2 :(得分:5)

运行此命令进行故障排除:./chromedriver(您的 chrome 驱动程序二进制文件所在的位置)。

您可能会看到如下错误:

./chromedriver: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory

要解决此错误,只需运行:sudo apt-get install libnss3

然后再次检查,看看这次是否有效:./chromedriver

其他一些包也可能丢失。这是一个详尽的列表:

gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget

您可能不需要所有这些,但上面可能列出了您需要的那些。

答案 3 :(得分:2)

使用 Selenium v​​3.11.0 ChromeDriver v2.36 Chrome v64.x 时,您必须下载最新的来自ChromeDriver - WebDriver for Chrome的ChromeDriver 并将其放置在您的系统中。接下来,在初始化 WebDriver WebBrowser 时,您必须传递参数executable_path以及 ChromeDriver 的绝对路径,如下所示:

from selenium import webdriver

driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
driver.get("http://www.python.org")

答案 4 :(得分:1)

通过仔细删除现有的chromedriver并将其更新为新版本来解决:

  1. 删除所有现有的chromedriver文件
  2. 下载wget https://chromedriver.storage.googleapis.com/2.46/chromedriver_linux64.zip(如果需要,将2.46位替换为较新的版本,请在此处查看兼容版本:http://chromedriver.chromium.org/downloads
  3. 解压缩,通过运行chmod +x chromedriver
  4. 转换为可执行文件
  5. 将其移至mv -f chromedriver /usr/local/bin/chromedriver,使其显示在PATH中

这应该可以解决问题。我以为更新不起作用,因为当我初次尝试时,我没有删除旧版本,而我仍然不小心使用了它。

答案 5 :(得分:0)

我遇到了同样的问题,并且该问题是由于 chromedriver 版本造成的。

请确保您使用的是最新的Chrome Browser和最新的chromedriver

答案 6 :(得分:0)

恢复为旧版本也可能是解决方案...

我正在使用Ubuntu 18.10,并安装了最新的Selenium(3.141.0)和ChromeDriver(75.0.3770.8),但也存在相同的权限问题,其后的状态码为127。

我尝试安装Chromium,并注意到Ubuntu正在使用版本73。因此,我从最新版本的Chromedriver(目前为75)恢复到了版本73,这对我有用。

答案 7 :(得分:0)

我有一个类似的问题,但事实证明我的问题是错误地将service_log_path设置为指向已删除的文件夹。

webdriver.Chrome(executable_path='/path/to/chromedriver', service_log_path='/path/to/existing/folder')

答案 8 :(得分:0)

我收到了相同的硒跟踪错误:

WebDriverException: Message: Service chromedriver unexpectedly exited. Status code was: 127

我的问题是由于尝试手动运行chromedriver时使用与浏览器(版本79)不同的chromedriver版本(版本78) Segmentation fault (core dumped)

一旦我更新了chromedriver以使其与浏览器匹配,它便能够成功启动

  

在端口9515上启动ChromeDriver 79.0.3945.36(3582db32b33893869b8c1339e8f4d9ed1816f143-refs / branch-heads / 3945 @ {#614})

仅允许本地连接。

请保护ChromeDriver和相关测试框架使用的端口,以防止恶意代码访问。

答案 9 :(得分:0)

我用这样的脚本来安装 Chrome

wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' | tee /etc/apt/sources.list.d/google-chrome.list
apt update -y
apt install -y gconf-service libasound2 libatk1.0-0 libcairo2 libcups2 libfontconfig1 libgdk-pixbuf2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libxss1 fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils
apt install -y google-chrome-stable