Python Selenium webdriver chromedriver "可能具有错误的权限" (OSX 10.13)



My Script:

from selenium import webdriver
browser = webdriver.Chrome(executable_path='/Users/John/Desktop')
browser.get('https://www.google.com')

要在终端中执行:

python seleniumtest.py

错误:

Traceback (most recent call last):
File "/Users/John/anaconda3/lib/python3.6/site- 
packages/selenium/webdriver/common/service.py", line 76, in start
stdin=PIPE)
File "/Users/John/anaconda3/lib/python3.6/subprocess.py", line 709, in __init__
restore_signals, start_new_session)
File "/Users/John/anaconda3/lib/python3.6/subprocess.py", line 1344, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
PermissionError: [Errno 13] Permission denied: '/Users/John/Desktop'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "seleniumtest.py", line 3, in <module>
browser = webdriver.Chrome(executable_path='/Users/John/Desktop')
File "/Users/John/anaconda3/lib/python3.6/site-packages/selenium/webdriver/chrome/webdriver.py", line 68, in __init__
self.service.start()
File "/Users/John/anaconda3/lib/python3.6/site-packages/selenium/webdriver/common/service.py", line 88, in start
os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'Desktop' executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home

据我所知,我已经安装了chromedriver,这里出了什么问题?

我想提供一种替代解决方案,它不需要您将chromedriver移动到local/bin。这最初是作为本文的答案发布的。只是分享这个以防万一有人在 Mac 上使用cx_freeze时偶然发现这个问题。


这里和其他相关帖子中的大多数答案都建议用户将文件移动到/usr/bin,如果您只是在本地正常运行chromedriver,它们就可以正常工作。

但是,如果您使用编译器将 Python 脚本编译为可执行文件,例如cx_freeze,如果您的程序始终使用相对链接来chromedriver,您可能无法承受这种奢侈。

正如错误消息所暗示的那样,您编译的程序没有权限操作chromedriver。要在编译的 Python 程序中使用 Mac 上chromedriver的相对链接,您可以使用以下方法以编程方式更改 Python 脚本中chromedriver的权限:

import os
os.chmod('/path/to/chromedriver', 0755) # e.g. os.chmod('/Users/user/Documents/my_project/chromedriver', 0755)

您可以通过执行以下操作来测试这一点:

  1. cd到您的工作目录

  2. $ chmod 755 chromedriver允许程序操作它

附言755usr/bin中文件的默认数字权限。664是其他普通文件夹(可能是您的工作目录)中文件的默认数字权限。因此,当chromedriver抱怨它没有正确的权限时,您需要授予它等于或大于755的数字权限。

将把另一个解决方案扔进锅里。

我是这样的:

import requests, json, os, time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options as ChromeOptions
my_headers = {}
my_headers['user-agent'] = 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'

做了

brew cask install chromedriver  

并且仍然收到错误。

然后我下载了匹配的 chromedriver 二进制文件

https://chromedriver.storage.googleapis.com/index.html

并将其放在我的脚本根目录中。这似乎可以解决问题!

相关内容

  • 没有找到相关文章

最新更新