我只是想在我的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()
答案 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 具有错误的权限。
启动 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)
您可以通过以下操作对此进行测试:
cd
到您的工作目录
$ chmod 755 chromedriver
以允许您的程序对其进行操作
P.S。
755
是usr/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()
调用中,则会导致权限错误。把它添加到本地环境路径就足够了。