【问题标题】:selenium.common.exceptions.WebDriverException: Message: 'library' executable may have wrong permissions for ChromeDriverselenium.common.exceptions.WebDriverException:消息:“库”可执行文件可能对 ChromeDriver 有错误的权限
【发布时间】:2018-04-01 03:22:49
【问题描述】:

我想使用 chrome webdriver 连接到“https://www.google.com”。 下面是代码。

from selenium import webdriver  
import time  

driver = webdriver.Chrome("C:\\Users\\faisal\\library")  
driver.set_page_load_timeout(10)  
driver.get("https://www.google.com")  
driver.find_element_by_name("q").send_keys(" automation by name ")  
driver.find_element_by_name("blink").click()  
time.sleep(5)  
driver.close()  

当我运行测试时,显示以下错误消息。这是一个权限问题

C:\Users\faisal\PycharmProjects\firstSeleniumTest2\venv\Scripts\python.exe C:/Users/faisal/PycharmProjects/firstSeleniumTest2/test.py
Traceback (most recent call last):
  File "C:\Users\faisal\PycharmProjects\firstSeleniumTest2\venv\lib\site-packages\selenium\webdriver\common\service.py", line 76, in start
    stdin=PIPE)
  File "C:\Python\lib\subprocess.py", line 709, in __init__
    restore_signals, start_new_session)
  File "C:\Python\lib\subprocess.py", line 997, 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:/Users/faisal/PycharmProjects/firstSeleniumTest2/test.py", line 4, in <module>
    driver = webdriver.Chrome("C:\\Users\\faisal\\library")
  File "C:\Users\faisal\PycharmProjects\firstSeleniumTest2\venv\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 68, in __init__
    self.service.start()
  File "C:\Users\faisal\PycharmProjects\firstSeleniumTest2\venv\lib\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: 'library' executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home


Process finished with exit code 1

【问题讨论】:

    标签: python selenium selenium-webdriver selenium-chromedriver chrome-web-driver


    【解决方案1】:

    错误说明了一切:

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

    在你提到的代码块中:

    driver = webdriver.Chrome("C:\\Users\\faisal\\library")
    

    错误清楚地表明您的程序将 library 视为 ChromeDriver 二进制文件。因此出现错误。

    但根据selenium.webdriver.chrome.webdriver 的文档,对WebDriver() 的调用如下:

    class selenium.webdriver.chrome.webdriver.WebDriver(executable_path='chromedriver', port=0, options=None, service_args=None, desired_capabilities=None, service_log_path=None, chrome_options=None)
    

    因此,您需要更改发送 Key executable_path 以及 Value 作为单个 qoute '' 中的绝对路径以及原始 (r) 开关如下:

    driver = webdriver.Chrome(executable_path=r'C:\Users\faisal\library\chromedriver.exe')
    

    更新

    根据@Mangohero1 of-coarse 的反问,executable_path 是可选的,但如果您根据 绝对路径下方提供的源代码仅提供 绝对路径 em> 被认为是 ValueKey executable_path

    class WebDriver(RemoteWebDriver):
        """
        Controls the ChromeDriver and allows you to drive the browser.
    
        You will need to download the ChromeDriver executable from
        http://chromedriver.storage.googleapis.com/index.html
        """
    
        def __init__(self, executable_path="chromedriver", port=0,
             options=None, service_args=None,
             desired_capabilities=None, service_log_path=None,
             chrome_options=None):
        """
        Creates a new instance of the chrome driver.
    
        Starts the service and then creates new instance of chrome driver.
    
        :Args:
         - executable_path - path to the executable. If the default is used it assumes the executable is in the $PATH
    

    【讨论】:

    • 实际上,如果我没记错的话,明确设置密钥 executable_path 是可选的。但是是的,它必须是绝对路径。
    • @Mangohero1 谢谢,根据您的计数器问题添加了更新。如果有任何进一步的疑问,请告诉我。
    【解决方案2】:

    C:\Users\faisal\library 不是 chromedriver 的正确路径。提供 chromedriver 文件的实际路径。

    【讨论】:

    • 实际路径是:"C:\\Users\\faisal\\library\\chromedriver.exe" 谢谢
    【解决方案3】:

    如果Linux提供权限将解决问题。

    使用

    sudo chmod +x chromedriver
    

    【讨论】:

      【解决方案4】:

      driver=webdriver.Chrome("C:\\Users\\SQA Anas\\Downloads\\chromedriver.exe")

      请像这样输入完整的 chrome 驱动程序路径: "C:\Users\SQA Anas\Downloads\chromedriver.exe"

      它对我有用:)

      【讨论】:

        【解决方案5】:

        executable_path最后应该有chromedriver:

        executable_path='/home/selenium/Linkedin-Automation/chromedriver'
        

        【讨论】:

          【解决方案6】:

          我必须使用以下命令在 Windows 10 64 bit32 bit chromedriver 上运行:

          driver = webdriver.Chrome(executable_path=r'C:\\Users\\My Name\\Downloads\\chromedriver_win32\\chromedriver.exe')
          

          【讨论】:

            猜你喜欢
            • 2022-01-19
            • 1970-01-01
            • 2018-09-22
            • 2018-03-22
            • 1970-01-01
            • 1970-01-01
            • 2018-02-14
            • 2018-02-15
            相关资源
            最近更新 更多