“Webdrivers”可执行文件可能具有错误的权限。请参阅 https://sites.google.com/a/chromium.org/chromedriver/home
- 2025-01-13 08:53:00
- admin 原创
- 92
问题描述:
我查看了两份文件,但没有找到答案。
我一直在尝试使用 InstaPy,一个用于 Python 的 instagram api。在出现多个错误并失败后,我认为 InstaPy 只是遇到了一些问题,所以我尝试使用 selinium 对其进行原始编码。插入示例代码并根据我的喜好进行修改后,我只是确保这个代码可以正常工作。我收到了一个新的错误,而不是旧的错误,提示权限可能不正确。我尝试重新安装并以管理员身份运行,但没有任何效果。我该如何修复这个问题和/或这是什么意思
代码:
import time
from selenium import webdriver
driver = webdriver.Chrome('C:Webdrivers') # Optional argument, if not specified will search path.
driver.get('http://www.google.com/xhtml');
time.sleep(5) # Let the user actually see something!
search_box = driver.find_element_by_name('q')
search_box.send_keys('ChromeDriver')
search_box.submit()
time.sleep(5) # Let the user actually see something!
driver.quit()
错误:
Traceback (most recent call last):
File "C:Program Files (x86)Python36-32libsite-packagesseleniumwebdrivercommonservice.py", line 74, in start
stdout=self.log_file, stderr=self.log_file)
File "C:Program Files (x86)Python36-32libsubprocess.py", line 707, in __init__
restore_signals, start_new_session)
File "C:Program Files (x86)Python36-32libsubprocess.py", line 990, in _execute_child
startupinfo)
PermissionError: [WinError 5] Access is denied
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:WebdriversRawBot.py", line 5, in <module>
driver = webdriver.Chrome('C:Webdrivers') # Optional argument, if not specified will search path.
File "C:Program Files (x86)Python36-32libsite-packagesseleniumwebdriverchromewebdriver.py", line 62, in __init__
self.service.start()
File "C:Program Files (x86)Python36-32libsite-packagesseleniumwebdrivercommonservice.py", line 86, in start
os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'Webdrivers' executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home
解决方案 1:
此错误信息...
WebDriverException: Message: 'Webdrivers' executable may have wrong permissions.
...意味着您尝试使用的ChromeDriver变体具有错误的权限。
您似乎已经尝试过:
driver = webdriver.Chrome('C:Webdrivers') # Optional argument, if not specified will search system $PATH variable.
几句话:
如果你的基础操作系统是视窗:
+ 您必须从ChromeDriver 下载位置下载**chromedriver_win32.zip**并解压缩以供使用。
+ 此外,如果您明确指定*Chromedriver*二进制路径,则还必须附加二进制扩展名,即*chromedriver.exe*。
+ 在提到*Chromedriver*二进制路径时,您必须使用单个正斜杠ie`(/)`和原始`(r)`开关,或者必须使用转义的反斜杠ie `(\\)`。
+ 因此,您的有效代码行将是:
driver = webdriver.Chrome(executable_path=r'C:/path/to/chromedriver.exe')
如果你的基础操作系统是Linux的:
+ 您必须从ChromeDriver 下载位置下载**chromedriver_linux64**并解压才能使用。
+ 此外,如果您明确指定*Chromedriver*二进制路径,则**不必**为可执行二进制文件提供任何扩展,实际上就是*chromedriver*。
+ 在提到*Chromedriver*二进制路径时,您必须使用单个正斜杠,即`(/)`。
+ 因此,您的有效代码行将是:
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
如果你的基础操作系统是苹果系统:
+ 您必须从ChromeDriver 下载位置下载**chromedriver_mac64**并解压才能使用。
+ 此外,如果您明确指定*Chromedriver*二进制路径,则**不必**为可执行二进制文件提供任何扩展,实际上就是*chromedriver*。
+ 在提到`chromedriver`二进制路径时,您必须使用单个正斜杠,即`(/)`。
+ 因此,您的有效代码行将是:
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
解决方案 2:
输入完整文件名“chromedriver.exe”即可解决此问题。如果您使用的是 Windows,请尝试此方法
解决方案 3:
您只需添加
/chromedriver.exe
在路径的末尾像这样:
driver = webdriver.Chrome('C:/Users/User/Downloads/chromedriver_win32/chromedriver.exe')
注意:如果从“文件资源管理器”复制路径,您将获得:
C:\用户\用户\下载\chromedriver_win32
您将需要使用双反斜杠,如下所示:
C:\\Users\\User\\Downloads\\chromedriver_win32
这样就不会出现语法错误。或者您也可以直接使用正斜杠。
解决方案 4:
如果您使用的是 Linux 操作系统,更改文件权限可能会解决问题。但请注意您对权限的操作:
chmod 755 "/path to chromedriver file"
我通过 python 本身下载了该文件,但不幸的是它禁用了执行权限,这是对它的快速修复。
解决方案 5:
在 Linux 中,您需要指定包括文件本身在内的完整路径,而不仅仅是文件夹(在 Linux 中,默认情况下,下载的 chrome 驱动程序文件位于文件夹中,例如“chromedriver_linux64”,打开该文件夹并检查确切的文件名,通常是“chromedriver”):
from selenium import webdriver
chrome_driver_path = "/home/mn/chromedriver_linux64/chromedriver"
driver = webdriver.Chrome(executable_path=chrome_driver_path)
driver.get("https://www.amazon.com")
解决方案 6:
如果您使用的是 chrome,则必须指定 chromedriver 的完整路径。搜索您的 chromedriver 可执行文件所在的目录。单击 Shift+右键单击可执行文件。选择“复制为路径”并将其粘贴到您的脚本中。不要忘记使用双反斜杠
所以应该是:
driver = webdriver.Chrome('C:\\Utility\\BrowserDrivers\\chromedriver.exe')
解决方案 7:
如果您使用 Mac OS Big Sur 和 Chromedriver 90+,则您的 Chromedriver 的权限可能会出现错误。
如果是这种情况,则不是您通过“chmod”更改的文件权限,而是 Apple Store 保护禁止执行 Web 驱动程序。
如果您希望允许在 Python 环境中或通过命令行使用该驱动程序,请输入:
`$ sudo xattr -r -d com.apple.quarantine /usr/local/bin/chromedriver`
解决方案 8:
chmod 755 "/path to chromedriver file"
这对我有帮助
解决方案 9:
在 django 中遇到了同样的问题。
然而,当我在本地运行相同的代码(不激活我的 django 应用程序)时,一切都很好,并且不必明确定义 chrome 驱动程序的路径。
通过明确定义路径和 chromederiver.exe 来解决这个问题
与上面的答案类似。path =“C:/Users/YOUR_USER/Desktop/chromedriver/chromedriver.exe”
就我而言,由于我最终想发布我的应用程序,所以我使用了动态路径
IE。
import os
BASE_oaAPP_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
BASE_oaAPP_Utilities_DIR = os.path.join(BASE_oaAPP_DIR, 'mySubFolderInTheApp')
def utilsPathFileName(fileName):
return os.path.join(BASE_oaAPP_Utilities_DIR, fileName)
chrome_path = utilsPathFileName('chromedriver.exe')
driver = webdriver.Chrome(chrome_path)
解决方案 10:
WINDOWS:提供完整的文件路径解决问题。
许多教程和文章都是使用以前的版本录制的,您只需提供包含 Web 驱动程序的目录路径。但现在您还必须提供您正在使用的特定驱动程序路径。
而不是C:/WebDrivers
给出完整的文件路径C:/WebDrivers/chromedriver.exe
解决方案 11:
同样的问题。我的解决方案是在 Linux 操作系统、Pycharm 编辑器中...
确保你的 webdriver 文件与其他 python 文件(例如 selinum_driver.py)
然后只需复制路径并将其粘贴到您的 webdriver.Chrome('path') 中
不需要编写 webdriver.exe
driver = webdriver.Chrome('/home/raju/Documents/Python-selenium/chromedriver')
解决方案 12:
对于 WINDOWS 10:我在 Visual Studio Code 中运行测试代码时遇到了类似的情况,并显示相同的错误消息。我解决这个问题的方法是关闭 VS Code 应用程序,然后通过右键单击菜单以管理员身份重新打开该应用程序。
解决方案 13:
对我来说,上述答案都不起作用。但将 chromedriver.exe 移动到新路径(在我的情况下是桌面)解决了这个问题。
path = "C:/Users/YOUR_USER/Desktop/chromedriver/chromedriver.exe"
解决方案 14:
当我错误地安装驱动器时,我得到了同样的错误(当为 Mac 下载 Windows 驱动程序时),一旦我纠正它就可以正常工作
解决方案 15:
您需要在驱动程序路径末尾添加 exe 才能工作。
解决方案 16:
找到您安装的 driver.exe,按 Shift 键并单击鼠标右键,复制为路径,然后将其粘贴到您的 IDE
解决方案 17:
我们可以为centos修复这个问题
#Install package chromedriver. Install it using yum
yum install chromedriver
#Import following package in python.
from selenium import webdriver
#Add following options before initializing the webdriver
chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_argument("--headless")
chromeOptions.add_argument("--remote-debugging-port=9222")
chromeOptions.add_argument('--no-sandbox')
driver = webdriver.Chrome('/usr/bin/chromedriver',chrome_options=chromeOptions)
解决方案 18:
如果你在 Windows 计算机上运行它,你也可以将它添加到 Windows PATH(环境变量)中,这样你就不必声明executable_path
。你只需说:webdriver.Chrome(options=your_options)
解决方案 19:
我收到了 MacOs 的错误,将路径更改为下面给出的路径后,问题就解决了。
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
解决方案 20:
Windows 用户和 Visual Studio 代码:在提到 Chromedriver 二进制路径时,您必须使用单个正斜杠(即 (/) 以及原始 (r) 开关,或者必须使用转义的反斜杠(即 (\)。以及使用精确的路径并在路径末尾添加 chromedriver.exe 以直接指向可执行文件:
driver = webdriver.Chrome(executable_path=r'C:/path/to/chromedriver.exe')
或者:
driver = webdriver.Chrome(r'C:\\Users\\wanja\\Downloads\\Compressed\\chromedriver_win32\\chromedriver.exe')
解决方案 21:
此错误意味着文件 chromedriver 不可执行,我使用运行命令修复此错误(在 linux 中):
sudo chmod +777 chromedriver
这意味着让所有有访问权限的人都可以执行该文件。