关于MAC的Selenium,消息:' chromedriver'可执行文件可能有错误的权

时间:2018-04-12 03:06:47

标签: python selenium selenium-webdriver webdriver selenium-chromedriver

我只是想在我的Mac上用硒做一些非常基本的东西,我甚至无法打开网页。我收到错误:

Traceback (most recent call last):
  File "/Users/godsinred/Desktop/InstagramLiker/GmailAccountGenerator.py", line 10, in <module>
    driver = webdriver.Chrome()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/chrome/webdriver.py", line 68, in __init__
    self.service.start()
  File "/Library/Frameworks/Python.framework/Versions/3.6/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: 'chromedriver' executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home

以下是我的代码:

from selenium import webdriver
import time

link = "https://accounts.google.com"
driver = webdriver.Chrome()
driver.get(link)
time.sleep(5)

driver.quit()

6 个答案:

答案 0 :(得分:2)

错误说明了一切:

void* object = (void*)resized.ptr() ;
int64_t* dims; //set dims
//C API
TF_Tensor* tftensor = TF_NewTensor(TF_DataType::TF_FLOAT, dims, nDims, object, data_size, &deallocator, 0);

//C++ API
tensorflow::Tensor input_tensor(tensorflow::DT_FLOAT, tensorflow::TensorShape({ batch_size, objectHeight, objectWidth, objectChannels }));
int data_size = objectHeight * objectWidth * objectChannels * batch_size * sizeof(float);
std::copy_n((float*)object, data_size, (input_tensor.flat<float>()).data());

该错误明确提到检测到的 chromedriver 具有错误的权限。

解决方案

  • ChromeDriver - WebDriver for Chrome下载最新的 chromedriver 二进制文件并将其保存在您的系统中。
  • 确保 chromedriver 二进制文件具有所需的权限。
  • 启动 WebDriver WebClient 时,会将 executable_path 参数与 chromedriver的绝对路径一起传递二进制如下:

    selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home
    

答案 1 :(得分:1)

这有效!我按照以下说明更新了PATH:https://www.kenst.com/2015/03/installing-chromedriver-on-mac-osx/

我将chromedriver.exe从Finder拖到Terminal(/ etc / paths)中,然后在Terminal中复制了该地址,并将其拖放到应该插入PATH的Python IDE中。

答案 2 :(得分:0)

此处和其他相关帖子中的大多数答案都建议用户将文件移至/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的数字权限。

答案 3 :(得分:0)

查看此主题

1-如果使用的是Linux,请访问包含该文件的文件夹 在755上设置的Chromedriver.exe

2-在代码中检查Chromedriver.exe文件的正确路径

3-如果您使用的是Windows服务器,请检查当前用户是否可用Chromedriver.exe文件(不仅管理员有权访问Chromedriver.exe,请参见c://用户...)

答案 4 :(得分:0)

如果您在 Windows 上,请提供包含文件名的路径。例如, './chromedriver/chromedriver.exe' 我的代码行如下所示。

service = webdriver.chrome.service.Service('./chromedriver/chromedriver.exe')

答案 5 :(得分:0)

在 Windows 中对我有用的是将驱动程序的位置添加到 Windows 本地 PATH var,重新启动我的 python 环境,以便在运行后显示驱动程序的路径:

import os;path = os.getenv('PATH'); print(path);

然后我加载驱动的时候没有指定路径:

from selenium import webdriver
driver =  webdriver.Chrome()

如果我尝试将路径放在 Chrome() 调用中,则会导致权限错误。把它添加到本地环境路径就足够了。