Python Selenium Webdriver“无法启动浏览器:权限被拒绝”

16

我想使用Selenium运行Firefox浏览器驱动程序,以便在网络爬虫中使用请求免登录。我从这个stackoverflow解决方案链接得到了灵感,因为由于多种原因使用请求进行登录不起作用。我总是会收到一个错误,浏览器无法启动,因为权限被拒绝了。下面是我的代码:

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
@Andersson 同样的问题! - Tessa
@thebadguy,ChromeDriver是否也提供保持登录状态的机会,这正是我试图通过Firefox配置文件实现的目标? - Tessa
@Tessa,是的,希望这个链接https://dev59.com/Ml0Z5IYBdhLWcg3wyy11#31063104能够帮到你。 - thebadguy
@Tessa,https://technet.microsoft.com/zh-cn/library/cc754344(v=ws.11).aspx(适用于“Windows 7”) - Andersson
显示剩余4条评论
5个回答

12

我正尝试让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')

希望这对你也有用。

2
谢谢,这很有帮助。我仍然收到错误消息“无法启动浏览器实体,未找到。Webdriver火狐”。 为了解决这个问题,我不得不更新火狐浏览器。然后我又遇到了错误消息“WebDriverException:Message:在握手中缺少'marionetteProtocol'字段”。 为了解决这个问题,我将行binary = FirefoxBinary(r'C:\Program Files (x86)\Mozilla Firefox\firefox.exe')中的“f”更改为大写的“F”,即“Firefox.exe”。 - Viragos
尝试了这个解决方案后,我仍然遇到了权限错误。我尝试了Viragos的建议,在FirefoxBinary()构造函数中将“firefox.exe”更改为“Firefox.exe”。现在我又遇到了另一个webdriver异常:“Socket timeout reading Marionette handshake data: An existing connection was forcibly closed by the remote host. (os error 10054)”。 - Jake Stevens-Haas

3
在Mac OS X上,您需要指向实际的Firefox二进制文件,而不仅仅是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)

1
只需在Windows路径中使用双反斜杠:
binary = FirefoxBinary(r'C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe')

0
在 Windows 10 上使用 Selenium 3.14.1,以下代码对我有效。
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")

希望这可以帮到你。

0

在你的电脑上更新Firefox浏览器并下载最新的gecko驱动程序。这对我来说很有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接