Parece que para rodar os últimos testes com o Firefox precisamos usar marionette porque eles não assinaram a extensão do driver Selenium Firefox (webdriver.xpi) e é necessária de acordo com lukeis. Você pode encontrar mais sobre isso aqui https://github.com/SeleniumHQ/selenium/issues/2559
Com o passar do tempo, este é um exemplo de como consegui resolver o problema.
Em primeiro lugar, estou usando:
- MacOS Sierra
- Python 3.5
- Selênio 3 beta 3
- Presumo que você esteja familiarizado com Python e Selenium
Estou usando o Selenium 3 beta porque preciso testar o Safari. Safari 10 fornece o webdriver para usar selênio, mas devemos usar a versão 3 https://webkit.org/blog/6900/webdriver-support-in-safari-10
- Passo 1:
- Fiz uma pesquisa rápida sobre Python 3.5, Selenium 3 e Firefox e encontrei um bug no Selenium que você pode corrigir facilmente fazendo o que dizem aqui: http://www.vardump.pw/sc?id=is39527858
- Em uma breve descrição, você precisa ir para a linha 133 do arquivo
webelement.py
e mudar deraw = pkgutil.get_data(__package__, 'getAttribute.js')
pararaw = pkgutil.get_data(__package__, 'getAttribute.js').decode('utf8')
. O meu estava localizado em/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium-3.0.0b3-py3.5.egg/selenium/webdriver/remote/webelement.py
- Passo 2:
- Vá para https://github.com/mozilla/geckodriver/releases https://github.com/mozilla/geckodriver/releases, baixe o GeckoDriver mais recente e extraia-o
- Etapa 3:
- Este é um pedaço de código como um exemplo do que você precisa testar e certificar-se de que pode usar o Firefox com Selenium
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
caps = DesiredCapabilities.FIREFOX
# Tell the Python bindings to use Marionette.
# This will not be necessary in the future,
# when Selenium will auto-detect what remote end
# it is talking to.
caps["marionette"] = True
# Path to Firefox DevEdition or Nightly.
# Firefox 47 (stable) is currently not supported,
# and may give you a suboptimal experience.
#
# On Mac OS you must point to the binary executable
# inside the application package, such as
# /Applications/FirefoxNightly.app/Contents/MacOS/firefox-bin
caps["binary"] = "/Applications/Firefox.app/Contents/MacOS/firefox-bin"
geckodriver="/Users/pmarques/Test/geckodriver"
driver = webdriver.Firefox(capabilities=caps, executable_path="/Users/pmarques/Test/geckodriver")
driver.get("http://www.google.com")