当前位置: 首页 > 知识库问答 >
问题:

Python 3 Selenium键错误:“value”问题不会为Firefox初始化Geckodriver

龚沛
2023-03-14

我在使用Python 3运行gecko驱动程序时遇到了问题。我最近使用我一直在开发的应用程序切换到Python 3,并更新了Firefox(53.0)、Selenium(3.4.3)和gecko驱动程序(0.17.1)。我还使用OSX并使用pip安装我所有的软件包。

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

# Set Firefox Settings
# binary = FirefoxBinary('Users/username/Applications/Firefox.app/Contents/MacOS/firefox')
# binary = FirefoxBinary('/Applications/Firefox.app/Contents/MacOS/firefox')
# binary = FirefoxBinary('/Applications/Firefox.app/Contents/MacOS/firefox-bin')

path = '/usr/local/bin/geckodriver'
profile = webdriver.FirefoxProfile()

browser = webdriver.Firefox(executable_path=path,
                        firefox_profile=profile,
                        firefox_binary=binary)

browser.get("http://google.com")

网络浏览器将启动,但随后我会收到以下错误:

Traceback (most recent call last):
File "/Users/jphubert/Desktop/AbstractionProject/py/browsertest.py", line 11, in <module>
firefox_profile=profile),
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/firefox/webdriver.py", line 155, in __init__
keep_alive=True)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 92, in __init__
self.start_session(desired_capabilities, browser_profile)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 183, in start_session
self.capabilities = response['value']
KeyError: 'value'

我已经卸载并重新安装了Firefox和geckodriver,听取了@Viragos的建议,以确保我安装了MacOS版本@Debanjan让我走上了正确的道路,尝试设置Firefox二进制文件并将其包含在webdriver配置文件中,但我仍然会遇到同样的错误。

我试着从GitHub获取Firefox二进制文件并将其放入一个。py文件,并试图删除配置文件和可执行路径,但同样的问题仍然存在。我的二进制文件位于正确的位置,如果我自己沿着路径并单击它们,它就会工作。exe文件,但我不能让我的脚本运行了。

我一直在Python 2.7上运行Selenium没有任何问题,直到昨天升级gecko和Python时,我才遇到问题。

谢谢你!

共有3个答案

逑俊楚
2023-03-14

我也遇到了这个问题,当我试图在家里运行代码与gecko驱动程序在Py魅力。我添加gecko驱动程序文件夹到系统环境路径。然后我更新了Py魅力以及Selenium版本,然后它只是修复了这个问题。我可以在更新我的Selenium版本之前从CMD运行代码。更新了Selenium版本在Py魅力。它又工作了。这很奇怪。

我之前也尝试过添加geckodriver路径,但没有解决问题。

driverPath = 'C:\\Users\\xxx\\OneDrive\\xxx\\geckodriver.exe'
driver = webdriver.Firefox(firefox_profile=profile, executable_path=driverPath)
钱承允
2023-03-14

以下是您问题的答案:

使用硒3.4。x、 Python 3.6.1和geckodriver v0.16.1

  1. firefox\u二进制文件:提供您打算使用的firefox二进制文件的绝对路径

需要注意的是,当前的Selenium Python绑定与geckodriver不稳定,并且看起来是特定于架构的。您可以在此处找到github讨论和合并。因此,在初始化webdriver时,您可能还需要将firefox二进制文件的绝对路径作为参数传递

以下代码块将根据我们通过前面提到的参数设置的配置打开Firefox浏览器:

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

binary = FirefoxBinary('C:\\Program Files\\Mozilla Firefox\\firefox.exe')
profile = webdriver.FirefoxProfile()
path = "C:\\Utility\\BrowserDrivers\\geckodriver.exe"

browser = webdriver.Firefox(executable_path=path, firefox_profile=profile,firefox_binary=binary)
browser.get("http://google.com")

如果这能回答你的问题,请告诉我。

叶德运
2023-03-14

更新到gecko驱动程序0.17.0修复了我的问题
Firefox 53.0.3
Selenium 3.4.3
Python 3.6

binary = FirefoxBinary('C:\\Program Files (x86)\\Mozilla Firefox\\Firefox.exe')
driver = webdriver.Firefox(firefox_binary=binary) 
driver.get(url)
 类似资料:
  • 在本教程之后,我将尝试实现Spring会话Spring HttpSession教程 但是当我启动应用程序时,我遇到了一个初始化错误。 异常在线程"main"org.springframework.beans.factory.不满意依赖异常:错误创建bean与名称'springSessionRepositoryFilter'定义在类org.springframework.session.data.r

  • 问题内容: 我是使用log4j软件包的新手,但看不到错误:这是一个非常简单明了的代码示例: 当我尝试编译时,出现此错误: my.package.logging.TestLogger.main(TestLogger.java:15)上的org.apache.logging.log4j.LogManager.getLogger(LogManager.java:129)处的线程“ main”中的java

  • c++中有列表初始化的操作,类似这样: 同时vector也可以这样写: 在网上查阅资料,列表初始化(写法1)用于聚合类,聚合类不能有构造函数。 而写法2应该是调用了vector类的构造函数,那么意味着vector应改该不能使用列表初始化,这是不是矛盾了呢?

  • 我试图在循环中初始化数组C,但它给出了错误: C是类ipdata的数组,我已经声明了它,并试图在循环中初始化它。 有什么问题吗?它表示:无法访问cluster_anlysis类型的封闭实例。必须使用cluster_anlysis类型的封闭实例限定分配(例如,x.new A(),其中x是cluster_anlysis的实例)。

  • 我正试图在谷歌地图Android API v2中获得一个带有自定义图标的标记。我刚刚更改了Google提供的一个示例。我添加了到方法中的RawMapViewDemoActivity 但我总是得到一个“IBitmapDescriptorFactory未初始化”。 在BitmapDescriptorFactory中,它说: 在使用此类中的任何方法之前,您必须执行以下操作之一以确保初始化此类: > 等待

  • 我最近安装了适用于Windows 64位的jdk-7u11。它最初运行得很好,我使用javac和java成功地编译和执行了我的java程序。但后来,当我使用javac编译一个文件时,它会顺利进行,当我继续使用java执行该文件时,会出现以下错误: VM初始化期间出错 java/lang/NoClassDefFoundError:java/lang/Object 我该怎么办?我是jdk的新手用户,我