我的剧本:
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,据我所知,这里出了什么问题?
答案 0 :(得分:0)
我想提供一种替代解决方案,它不需要您将chromedriver
移至local/bin
。这最初是作为答案发布在this post中的。如果在Mac上使用cx_freeze
时有人发现这个问题,以防万一。
此处和其他相关帖子中的大多数答案都建议用户将文件移至/usr/bin
,如果您只是在本地正常运行chromedriver
,他们就可以正常工作。
但是,如果您使用cx_freeze
之类的编译器将Python脚本编译为可执行文件,那么,如果您的程序始终使用指向chromedriver
的相对链接,那么您可能负担不起。
如错误消息所示,您的编译程序无权操作chromedriver
。要在Mac上的已编译Python程序中使用到chromedriver
的相对链接,可以使用以下命令以编程方式更改Python脚本中chromedriver
的权限:
import os
os.chmod('/path/to/chromedriver', 0755) # e.g. os.chmod('/Users/user/Documents/my_project/chromedriver', 0755)
您可以通过以下操作对此进行测试:
cd
到您的工作目录
$ chmod 755 chromedriver
以允许您的程序对其进行操作
P.S。
755
是usr/bin
中文件的默认数字权限。664
是其他普通文件夹(可能是您的工作目录)中文件的默认数字权限。因此,当chromedriver
抱怨它没有正确的权限时,您需要授予它一个等于或大于755
的数字权限。
答案 1 :(得分:0)
将另一种溶液倒入锅中。
我是这样的:
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
并将其放在脚本的根目录下。这似乎可以解决问题!