我在使用Python 3运行geckodriver时遇到问题。我最近使用我一直在处理的应用程序切换到Python 3,并更新了Firefox(53.0),Selenium(3.4.3)和geckodriver(0.17) 0.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")
Web浏览器将启动,但之后我将收到以下错误:
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文件,它就可以工作了,但我不能让我的脚本运行了。
我一直在运行Selenium而没有任何Python 2.7问题,只是从昨天开始升级gecko和Python,我遇到了问题。
谢谢!
答案 0 :(得分:0)
以下是您的问题的答案:
使用Selenium 3.4.x,Python 3.6.1以及geckodriver v0.16.1&amp; Mozilla Firefox 53.0,您可以配置以下参数:
firefox_binary
:提供您打算使用的确切Firefox二进制文件的绝对路径。firefox_profile
:指定是否要从新的/现有的Firefox配置文件开始。executable_path
:指定geckodriver.exe的绝对路径。需要注意的是,当前的Selenium-Python绑定在geckodriver中是不稳定的,并且看起来是特定于架构的。您可以在此处找到github discussion和merge。因此,在初始化 webdriver
时,您可能还需要将firefox二进制文件的绝对路径作为firefox_binary
参数传递
以下代码块将根据我们通过前面提到的参数设置的配置打开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")
如果这回答你的问题,请告诉我。
答案 1 :(得分:0)
更新到geckodriver 0.17.0为我解决了问题
Firefox 53.0.3
硒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)
答案 2 :(得分:0)
当我尝试在Pycharm中使用geckodriver在家里运行代码时,我也遇到了这个问题。我将geckodriver文件夹添加到“系统环境路径”中。然后我更新了Pycharm以及Selenium版本,然后它解决了这个问题。 在更新我的Selenium版本之前,我可以从CMD运行代码。在Pycharm中更新Selenium版本之后。再次正常工作。很奇怪。
我也尝试过在之前添加geckodriver路径,但这并不能解决问题。
driverPath = 'C:\\Users\\xxx\\OneDrive\\xxx\\geckodriver.exe'
driver = webdriver.Firefox(firefox_profile=profile, executable_path=driverPath)