【问题标题】:Python Selenium Webdriver `Failed to start browser: Permission Denied`Python Selenium Webdriver`无法启动浏览器:权限被拒绝`
【发布时间】:2017-03-02 14:06:28
【问题描述】:

我想用 selenium 运行一个 firefox 网络驱动程序,这样我就可以在网络爬虫中使用请求登录。我从这个 stackoverflow 解决方案link 中得到了这个想法,因为使用请求的登录由于多种原因无法正常工作。我总是收到一个错误,因为权限被拒绝,浏览器无法启动。这是我的代码:

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary=FirefoxBinary("/path/to/firefox")
fp=webdriver.FirefoxProfile("path/to/extra/profile")


url="www.python.org"
driver = webdriver.Firefox(fp,  firefox_binary=binary, executable_path="path/to/geckodriver.exe")
driver.get(url)

错误如下:

selenium.common.exceptions.WebDriverException: Message: Failed to start browser:
permission denied

有人可以帮忙吗?我一直在互联网上搜索多年,但找不到任何东西......谢谢!!!

【问题讨论】:

  • 你能试试driver = webdriver.Firefox()而不使用Profile吗?同样的问题?
  • @Andersson 同样的问题!
  • 简单的解决方案可以是下载chromedriver:chromedriver.storage.googleapis.com/index.html?path=2.24解压缩并放入python的脚本文件夹并使用driver = webdriver.Chrome()..我这么说是因为你的目的是报废页面& 不测试 Web 应用的 UI
  • @thebadguy chromedriver 是否还提供了保持登录到主页的机会,这正是我试图通过 firefox 配置文件实现的目标?
  • @Tessa..是的...希望这个stackoverflow.com/a/31063104/2425654能帮到你

标签: python selenium firefox selenium-webdriver


【解决方案1】:

我正在尝试让 Selenium 3 为 Firefox 工作,但遇到了一个接一个的错误消息。下载 geckodriver 并将其添加到系统路径后,最后一个错误与您看到的权限被拒绝问题相同。经过相当多的搜索和拼凑之后,最终奏效的是将 firefox.exe 也添加到了路径中。

这是完整的脚本:

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary(r'C:\Program Files (x86)\Mozilla Firefox\firefox.exe')
driver = webdriver.Firefox(firefox_binary=binary)

driver.get('http://www.google.com')

希望这对你也有用。

【讨论】:

  • 感谢帮助。我仍然收到错误Failed to start browser entitiy, not found. Webdriver firefox。为了解决这个问题,我不得不更新 Firefox。然后我收到错误WebDriverException: Message: Missing 'marionetteProtocol' field in handshake。为了解决这个问题,我在binary = FirefoxBinary(r'C:\Program Files (x86)\Mozilla Firefox\firefox.exe')行中的“firefox.exe”中将“f”更改为大写“F”
  • 尝试此解决方案后,我仍然遇到权限错误。我尝试了 Viragos 的建议,即在 FirefoxBinary() 构造函数中将“firefox.exe”更改为“Firefox.exe”。现在我得到另一个 webdriver 异常:“套接字超时读取 Marionette 握手数据:现有连接被远程主机强制关闭。(操作系统错误 10054)。”
【解决方案2】:

只需在 Windows 上的路径中使用双反斜杠:

binary = FirefoxBinary(r'C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe')

【讨论】:

    【解决方案3】:

    在 Mac OS X 上,您需要指向实际的 Firefox bin 而不仅仅是 Firefox.app。至少这对我有用。

    from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
    binary = FirefoxBinary('/Users/YOUR_USERNAME/Applications/Firefox.app/Contents/MacOS/firefox-bin')
    driver = webdriver.Firefox(firefox_binary=binary)
    

    【讨论】:

      【解决方案4】:

      在带有 Selenium 3.14.1 的 Windows 10 上,以下代码对我有用。

      binary = FirefoxBinary(r'C:\\Program Files\\Mozilla Firefox\\firefox.exe')
      driver = webdriver.Firefox(firefox_binary=binary, 
      executable_path='C:\\Tools\\Selenium\\geckodriver.exe')
      driver.get("https://www.python.org")
      

      希望这会有所帮助..

      【讨论】:

        【解决方案5】:

        更新您机器上的 Firefox 浏览器并下载最新的 gecko 驱动程序。这对我很有效。

        【讨论】:

          猜你喜欢
          • 2017-04-04
          • 2014-10-19
          • 1970-01-01
          • 2016-08-03
          • 2015-10-02
          • 2014-12-10
          • 1970-01-01
          • 2012-06-05
          • 2021-05-16
          相关资源
          最近更新 更多