使用:Selenium 3.4.3,Firefox 54,geckodriver 0.17.0
我通过在我的虚拟机上使用precision64框在python中创建Firefox webdriver来获取此错误消息。我的笔记本电脑正在运行Mac OS Sierra。这是我的错误消息:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 152, in __init__
keep_alive=True)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 98, in __init__
self.start_session(desired_capabilities, browser_profile)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 188, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 256, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Unable to find a matching set of capabilities
我正在运行browser = webdriver.Firefox()
。
我已尝试在 vagrant 目录中指定geckodriver可执行文件的路径,即browser = webdriver.Firefox('/vagrant/')
,但仍无法找到匹配的功能集。
我的geckodriver与我尝试运行的脚本位于同一目录中。我已将vagrant文件夹添加到我的路径中。
我相信我所使用的所有内容都是最新的,根据我this one所见的各种帖子。
有谁知道为什么我会遇到这个问题?提前谢谢。
答案 0 :(得分:2)
如果其他人遇到此问题:问题似乎是虚拟机没有显示器,并且需要像pyvirtualbox这样的虚拟显示器或像phantomJS这样的无头浏览器。
编辑: 我正在添加如何实现我列出的两个解决方案的示例。通常,您采取的解决此问题的方法取决于您拥有的限制。最简单的方法是不使用虚拟机,但如果您确实需要使用虚拟机,则需要采用上述两种方法之一。
# PHANTOM JS SOLUTION
from selenium import webdriver
driver = webdriver.PhantomJS() # assuming your phantomJS driver is in your path already
driver.get("https://www.google.com")
driver.quit() # only use this when done with automation
# PYVIRTUALBOX SOLUTION
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=0, size=(1920, 1080)).start()
driver = webdriver.Firefox()
driver.get("https://www.google.com")
display.close() # use this only once you are finished with automation
driver.quit()
答案 1 :(得分:0)
#Code Snippet
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
binary = FirefoxBinary('/Applications/Firefox.app/Contents/MacOS/firefox-bin')
driver = webdriver.Firefox(executable_path = "/usr/local/bin/geckodriver")
driver.get("http://www.google.com")
print driver.title
driver.quit()