【发布时间】:2020-06-07 06:18:20
【问题描述】:
我最近将我的 mac 机器升级到 OS Catalina(v 10.15.3)。升级后,我无法使用 selenium 启动 chrome 驱动程序。
当我运行 selenium 代码来启动 chrome 浏览器时,我遇到了以下错误。
“无法打开“chromedriver”,因为无法验证开发者”。 “macOS 无法验证此应用是否没有恶意软件。”
请帮帮我!
【问题讨论】:
我最近将我的 mac 机器升级到 OS Catalina(v 10.15.3)。升级后,我无法使用 selenium 启动 chrome 驱动程序。
当我运行 selenium 代码来启动 chrome 浏览器时,我遇到了以下错误。
“无法打开“chromedriver”,因为无法验证开发者”。 “macOS 无法验证此应用是否没有恶意软件。”
请帮帮我!
【问题讨论】:
【讨论】:
spctl --add --label 'Approved' chromedriver,然后尝试运行启动 chromedriver 的应用程序,然后转到设置位置并授予 chromedriver 访问权限。
我找到了如下解决方法
Command1: xattr -d com.apple.quarantine <name-of-executable>
例子
/usr/local/Caskroom/chromedriver
$ xattr -d com.apple.quarantine chromedriver
(或)
Command2: spctl --add --label 'Approved' <name-of-executable>
来源:https://docwhat.org/upgrading-to-catalina
注意:这仅适用于执行上述命令的文件。如果下载了新的 chromedriver,则必须在新下载的文件上再次执行该命令
【讨论】:
xattr -d com.apple.quarantine <path-to-executable> 不需要管理员权限 spctl --add --label 'Approved' <path-to-executable> 需要管理员密码
xattr -d com.apple.quarantine <path to chromedriver> 即xattr -d com.apple.quarantine /usr/local/bin/chromedriver
快速解决方案
在此之后脚本应该可以正常工作了。
【讨论】:
打开终端并导航到下载 chromedriver 的路径。
执行xattr -d com.apple.quarantine chromedriver
【讨论】:
以上答案很有帮助。我只想补充一点,如果您在开发环境中运行 Selenium,在我的情况下是 Jupyter Notebook,这就是问题所在,您可能会看到 PermissionError: [Errno 13] Permission denied 错误。此错误还有其他原因,但可能是 macOS Catalina 出于安全原因阻止 chromedriver 运行。按照上述方法,我从命令行运行它,然后能够使用 driver = webdriver.Chrome('path/to/chromedriver) 从 Jupyter 打开它。
【讨论】:
现有的答案很棒,而且很有效。
但更简单的解决方案是打开终端并运行:
xattr -d com.apple.quarantine $(which chromedriver)
【讨论】:
No such xattr: com.apple.quarantine ..
xattr -d com.apple.quarantine path/to/chromedriver
brew info chromedriver 获取它的路径,然后运行它(用你在上一步中给出的版本替换版本):xattr -d com.apple.quarantine /usr/local/Caskroom/chromedriver/89.0.4389.23/chromedriver
仅xattr -d com.apple.quarantine $(which chromedriver) 是不够的。
使用最新版本的 chromedriver,似乎它们正在划分为版本文件夹。
20 年 9 月 30 日对我来说。对我有用的是xattr -d com.apple.quarantine 85.0.4183.87/chromedriver
【讨论】:
解决这个问题的两个步骤:
cd /usr/local/bin 导航到路径。这是您将看到已安装 chromedriver 的位置。xattr -d com.apple.quarantine chromedriver。仅此而已。它对我有用。
【讨论】:
(对我有用,希望对你也有用)
使用自制软件安装chromedriver
brew install chromedriver
导航到位于 Caskroom 文件夹中的 chromedriver
/usr/local/bin/Caskroom/chromedriver ... keep going until you see the Unix Executable File called "chromedriver"
点击Apple's recommendation打开来自不明开发者的Mac应用,双击chromedriver,然后点击“打开”
对我来说,这导致一个终端窗口弹出,输出如下:
Starting ChromeDriver ...
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
我现在可以运行scrapy-selenium 没问题,你可以关闭终端窗口(是的,终止进程就可以了),它应该仍然可以正常工作而不会停止你。
让我知道这是否适合你
【讨论】:
在 macOS Catalina 版本 10.15.6 (19G73) 上对我有用的是
通过 Homebrew 安装 chromedriver:
brew install chromedriver
然后,在Finder中点击Go菜单,点击Go to folder option,然后输入这条路线:
/usr/local/Caskroom/chromedriver/
您应该会看到一个文件夹,其中包含您已安装的 chromedriver 版本,如下所示:
88.0.4324.96
输入文件夹,您应该会看到 chromedriver 二进制文件。
右键点击它,然后点击Open
现在,您应该会弹出一个带有输出的终端窗口:
Last login: Sun Jan 31 12:29:15 on ttys001
/usr/local/Caskroom/chromedriver/88.0.4324.96/chromedriver ; exit;
~ /usr/local/Caskroom/chromedriver/88.0.4324.96/chromedriver ; exit;
Starting ChromeDriver 88.0.4324.96 (68dba2d8a0b149a1d3afac56fa74648032bcf46b-refs/branch-heads/4324@{#1784}) on port 9515
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
最后按Ctrl+C停止执行并退出终端窗口。
现在,您应该可以运行 capybara 测试了。
【讨论】:
1.导航到 chromedriver 文件所在的路径 2.右键单击chromedriver 3.用终端打开 4.运行你的代码
【讨论】:
这是一个权限问题... 升级 chrome 后出现此错误,所以我按照下面提到的步骤操作,它在我的系统中运行。
【讨论】:
我发现如果你尝试过这个解决方案:
// Get the path to chromedriver, example: /usr/local/bin/chromedriver
which chromedriver
// Change permissions
xattr -d com.apple.quarantine <path_to_chromedriver>
您的浏览器打开然后立即关闭,可能是安装了错误的 chromedriver 版本。
通过启动 chrome 然后选择来查找您的 chrome 版本
Chrome > About Google Chrome
删除您当前的 chromedriver 并搜索与“关于 Google Chrome”中显示的 chrome 版本匹配的 chromedriver(例如:96.0.4664.110)。这在装有 Monterey OS 的 Mac 上对我有用
【讨论】:
解决此错误的最简单方法,请按照以下步骤操作。
【讨论】: