Linux上的Chromedriver错误

7
在格式化红帽服务器(Amazon-flavored Linux)并重新安装Python、Selenium、pyvirtualdisplay、Xvfb、Chrome和Chromedriver之后,我遇到了一个错误: selenium.common.exceptions.WebDriverException: Message: Service /usr/bin/chromedriver unexpectedly exited. Status code was: 127 在使用以下代码初始化浏览器/驱动程序时会出现此错误: driver = webdriver.Chrome(executable_path="/usr/bin/chromedriver") 我正在使用Richard Lloyd的Chrome和Chromedriver 2.9。我认为这个问题源于Chromedriver的依赖关系问题。
非常感谢任何帮助。我已经为这个问题挣扎了一段时间。

Stack Overflow是一个关于编程和开发问题的网站。这个问题似乎不属于编程或开发范畴。请参阅帮助中心中的我可以在这里问什么样的问题。也许超级用户Unix&Linux Stack Exchange更适合提问。另请参阅我应该在哪里发布Dev Ops相关问题? - jww
1
我来晚了,但这绝对不是dev ops。 这是我目前在VM上尝试使用selenium进行chrome扩展开发时遇到的问题,因为该VM没有屏幕。 [这篇帖子](https://dev59.com/XF8e5IYBdhLWcg3wHXeJ#37760053)是我找到的最接近的答案,但我仍然有这个问题。 - firechant
嘿@firechant,经过多次尝试,我最终通过在Ubuntu EC2实例上切换到Firefox找到了一个解决方法。虽然不是理想的解决方案,但对我来说完成了工作... 1.基本的EC2设置,2.下载pip软件包管理器,3.apt-get xvfb,4.安装Firefox 50.1.0和geckodriver 0.11.1。 - root
2个回答

4

我知道有点晚了,但我在寻找问题时发现问题是我没有安装chromium。我按照这个教程jrg提供的步骤操作,成功地打开了webdriver。

我依次运行的命令如下:

sudo apt-get install libxss1 libappindicator1 libindicator7 fonts-liberation
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome*.deb

之后,我可以轻松地使用以下命令创建一个webdriver:

driver = webdriver.Chrome(CHROME_DRIVER_PATH)

希望这能帮助到其他为同样原因寻找答案的人!

1
我当时使用的是Ubuntu 16.04,在经过详尽的搜索后找到了这个答案-如果你正在使用Debian版本,它可能并不是非常有帮助,但如果你遇到错误,请告诉我你的Debian版本,我会看看能否提供帮助。 - bubthegreat
我按照你建议的做了,@bubthegreat,似乎一切都设置好了,但现在我得到了这个错误:packages/selenium/webdriver/common/service.py", line 88, in start os.path.basename(self.path), self.start_error_message) selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable may have wrong permissions. 我使用的是EC2 Ubuntu实例,已经花费了数小时时间。任何指导都将不胜感激。 - Bryan Heckler
@bubthegreat 我通过进入驱动程序所在的目录并使用此命令 chmod a+x chromedriver 将chromedriver设置为可执行来解决权限问题,但现在我卡在了一个 chromedriver意外退出。状态代码为:12 的问题上。我已经没有更多的调试想法了。:\ - Bryan Heckler
目前还无法重现,但是可以尝试访问https://www.reddit.com/r/learnpython/comments/81ethp/chromiumchromedriver_missing_library_libgfx_on/。 - bubthegreat

1

如果像您在此处描述的那样是依赖问题,这可以帮助您了解缺少什么?

LD_DEBUG=all path-to-executable/command/driver -args(if any)

例如:

LD_DEBUG=all cat

示例输出:

LD_DEBUG=all ping google.com

正如此输出截图所示,它显示了实际上需要ping的内容以及以哪个顺序进行,类似地,当按下CTRL+C时,它会显示停止ping的情况。

我发布了这个截图,因为由于字符限制,我无法发布整个输出,请告诉我是否解决了您的问题。

检查此处以获取完整输出http://www.bnikolic.co.uk/blog/linux-ld-debug.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接