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

时间:2018-04-19 10:49:35

标签: python macos selenium webdriver selenium-chromedriver

我的剧本:

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,据我所知,这里出了什么问题?

2 个答案:

答案 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)

您可以通过以下操作对此进行测试:

  1. cd到您的工作目录

  2. $ chmod 755 chromedriver以允许您的程序对其进行操作

  

P.S。 755usr/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

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