WebDriverException:消息:使用 ChromeDriver 和 Selenium 在 Raspberry-Pi 上意外退出服务 /usr/lib/chromium-browser/ch
Posted
技术标签:
【中文标题】WebDriverException:消息:使用 ChromeDriver 和 Selenium 在 Raspberry-Pi 上意外退出服务 /usr/lib/chromium-browser/chromedriver【英文标题】:WebDriverException: Message: Service /usr/lib/chromium-browser/chromedriver unexpectedly exited on Raspberry-Pi with ChromeDriver and Selenium 【发布时间】:2018-09-22 14:56:20 【问题描述】:我编写了一个 python 脚本,它在浏览器中执行一些任务(使用 Selenium),它在 Windows 中运行良好。现在我正试图把它放到我的树莓派上。
我进行了大量搜索以找到使其与 Chromium 一起使用的最佳方法。我能找到的最好的是Reddit Link。
问题是我找不到适合我的 Chromium 版本(版本 56.0.2924.84)的 chromedriver。当我进行 apt-get upgrade 时,它建议我拥有最新版本的 Chromium。我已经通过从Launchpad Link 下载尝试了 chromedriver 版本 53 到 65。
所以当我运行以下命令时
from selenium import webdriver
driver_path = 'usr/lib/chromium-browser/chromedriver'
driver = webdriver.Chrome(driver_path)
Chrome 驱动程序出现此错误 > 58
selenium.common.exceptions.SessionNoteCreatedException: Message: session not
created exception: Chrome version must be >= 59.0.3071.0
(Driver info: chromedriver=2.43,platform=Linux 4.9.35-v7+ armv7l)
或者 chrome 驱动的这个错误
selenium.common.exceptions.WebDriverException: Message:
Service /usr/lib/chromium-browser/chromedriver unexpectedly exited. Status code was: 127
如有任何帮助,我们将不胜感激
【问题讨论】:
以防其他人像我一样感到沮丧 - 我刚刚安装了 iceweasel 和旧版本的 geckodriver 并且我的脚本最终工作了。 【参考方案1】:根据您的问题,您的 Chromium 二进制文件的版本为 56.0.2924.84。因此,考虑到这一约束,解决方案是从ChromeDriver Google Storage
下载以下任一 ChromeDriver 版本 ChromeDriver v84:支持 Chrome v84 ChromeDriver v83:支持 Chrome v83 ChromeDriver v82:被故意跳过 ChromeDriver v81:支持 Chrome v81 ChromeDriver v80:支持 Chrome v80 ChromeDriver v79:支持 Chrome v79 ChromeDriver v78:支持 Chrome v78 ChromeDriver v77:支持 Chrome v77 ChromeDriver v76:支持 Chrome v76 ChromeDriver v75:支持 Chrome v75 ChromeDriver v74:支持 Chrome v74 ChromeDriver v73:支持 Chrome v73 ChromeDriver v2.46:支持 Chrome v71-73 ChromeDriver v2.46:支持 Chrome v71-73 ChromeDriver v2.45:支持 Chrome v70-72 ChromeDriver v2.44:支持 Chrome v69-71(与 ChromeDriver 2.43 相同,但修复了其他错误) ChromeDriver v2.43:支持 Chrome v69-71 ChromeDriver v2.42:支持 Chrome v68-70 ChromeDriver v2.41:支持 Chrome v67-69 ChromeDriver v2.40:支持 Chrome v66-68 ChromeDriver v2.39:支持 Chrome v66-68 ChromeDriver v2.38:支持 Chrome v65-67 ChromeDriver v2.37:支持 Chrome v64-66 ChromeDriver v2.36:支持 Chrome v63-65 ChromeDriver v2.35:支持 Chrome v62-64 ChromeDriver v2.34:支持 Chrome v61-63 ChromeDriver v2.33:支持 Chrome v60-62 ChromeDriver v2.32:支持 Chrome v59-61 ChromeDriver v2.31:支持 Chrome v58-60 ChromeDriver v2.30:支持 Chrome v58-60 ChromeDriver v2.29:支持 Chrome v56-58li> ChromeDriver v2.28:支持 Chrome v55-57 ChromeDriver v2.27:支持 Chrome v54-56注意:几个月前,Chromium 团队 发了preliminary announcement,表示 ChromeDriver 的版本控制模型将发生变化。 Chromium 团队 正在推进该计划。具体来说,ChromeDriver 2.46 将是最后一个带有 2 主要版本的版本。未来的 ChromeDriver 版本将带有类似于 Chrome 版本的版本号。我们将在下周发布 ChromeDriver 73,在 Chrome 73 Beta 版之前发布。
以下是新发布模型的工作方式:
ChromeDriver 将使用与 Chrome 相同的版本号方案。请参阅https://www.chromium.org/developers/version-numbers 了解更多详情。 ChromeDriver 的每个版本都将支持具有匹配的主要、次要和内部版本号的 Chrome。例如,即将推出的 ChromeDriver 73.0.3683.* 将支持以 73.0.3683 开头的所有 Chrome 版本。 在 Chrome 的新主要版本进入 Beta 之前,将发布一个匹配的 ChromeDriver 版本。例如,下周将发布新版本的 ChromeDriver,以匹配 Chrome m73 的 Beta 版本。 在新的主要版本首次发布后,我们将根据需要发布补丁。这些补丁可能与 Chrome 的更新一致,也可能不一致。用于树莓派的 Chrome 驱动程序
当您使用 Raspberry Pi 时,您需要从 link 下载 ChromeDriver 的 arm 格式并在您的程序中使用它.
其他注意事项
将Selenium升级到当前级别Version 3.11.0。 按照上述讨论升级 ChromeDriver。 将 Chrome 版本保持在 Chrome v56.x 级别。 (根据讨论) 清理你的项目工作区通过你的IDE和重建你的项目只需要依赖。 使用CCleaner 工具在执行测试套件之前和之后清除所有操作系统杂务。 如果您的基础 Web Client 版本太旧,请通过 Revo Uninstaller 卸载它并安装最新的 GA 和发布版本的 Web Client。 进行系统重启。 执行您的@Test
。
【讨论】:
感谢您的信息。它做得很好,将帮助我或其他人。我最终感到非常沮丧,我安装了 iceweasel 和 geckodriver,最终成功了。【参考方案2】:之前:您应该下载二进制 chromedriver,将其解压缩到您 PC 中的某个位置,然后设置此驱动程序的路径,如下所示:
webdriver.Chrome('/home/user/drivers/chromedriver')
ChromeDriverManager(path=custom_path).install()
无聊!!!而且每次新版本的驱动发布,你都应该去一遍遍地重复所有的步骤。
使用 webdriver manager,您只需要执行两个简单的步骤:
安装管理器:
pip install webdriver-manager
与 Chrome 一起使用:
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
与铬一起使用:
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.utils import ChromeType
driver = webdriver.Chrome(ChromeDriverManager(chrome_type=ChromeType.CHROMIUM).install())
与 FireFox 一起使用:
from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager
driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
与 IE 一起使用:
from selenium import webdriver
from webdriver_manager.microsoft import IEDriverManager
driver = webdriver.Ie(IEDriverManager().install())
与边缘一起使用:
from selenium import webdriver
from webdriver_manager.microsoft import EdgeChromiumDriverManager
driver = webdriver.Edge(EdgeChromiumDriverManager().install())
与 Opera 一起使用:
from selenium import webdriver
from webdriver_manager.opera import OperaDriverManager
driver = webdriver.Opera(executable_path=OperaDriverManager().install())
注意
如果 Opera 浏览器安装在 Windows 上的 C:/Program Files
或 C:/Program Files (x86)
以及所有 unix 变体和 mac 上的 /usr/bin/opera
以外的位置,则使用以下代码:
from selenium import webdriver
from webdriver_manager.opera import OperaDriverManager
options = webdriver.ChromeOptions()
options.add_argument('allow-elevated-browser')
options.binary_location = "C:\\Users\\USERNAME\\FOLDERLOCATION\\Opera\\VERSION\\opera.exe"
driver = webdriver.Opera(executable_path=OperaDriverManager().install(), options=options)
【讨论】:
以上是关于WebDriverException:消息:使用 ChromeDriver 和 Selenium 在 Raspberry-Pi 上意外退出服务 /usr/lib/chromium-browser/ch的主要内容,如果未能解决你的问题,请参考以下文章
selenium.common.exceptions.WebDriverException:消息:“chromedriver”可执行文件需要在 PATH 中
WebDriverException:消息:“msedgedriver.exe”可执行文件可能在 Google Collab 中有错误的权限
WebDriverException:消息:使用 ChromeDriver 和 Selenium 在 Raspberry-Pi 上意外退出服务 /usr/lib/chromium-browser/ch
Selenium 因 selenium.common.exceptions.WebDriverException 崩溃:消息:newSession
selenium.common.exceptions.WebDriverException:消息:在 Python selenium 4 中
Webdriver 因 selenium.common.exceptions.WebDriverException 崩溃:消息:newSession [重复]