Run Selenium with latest Firefox versions
It seems that to run the latest tests with Firefox we need to use marionette because they didn't sign Selenium Firefox driver extension (webdriver.xpi) and it's required according to lukeis. You can find more about this here https://github.com/SeleniumHQ/selenium/issues/2559
Wither way, this is an example of how I was able to fix the problem.
First of all I'm using:
- MacOS Sierra
- Python 3.5
- Selenium 3 beta 3
- I'm assuming you are familiar with Python and Selenium
I'm using Selenium 3 beta because I need to test Safari. Safari 10 provides the webdriver in order to use selenium, but we must use version 3 https://webkit.org/blog/6900/webdriver-support-in-safari-10
- Step 1:
- I did a quick search about Python 3.5, Selenium 3 and Firefox and I come across a bug in Selenium that you can easily fix by doing as they say here: http://www.vardump.pw/sc?id=is39527858
- In a short description, you need to go to line 133 in the file
webelement.py
and change fromraw = pkgutil.get_data(__package__, 'getAttribute.js')
toraw = pkgutil.get_data(__package__, 'getAttribute.js').decode('utf8')
. Mine was located at/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium-3.0.0b3-py3.5.egg/selenium/webdriver/remote/webelement.py
- Step 2:
- Go to https://github.com/mozilla/geckodriver/releaseshttps://github.com/mozilla/geckodriver/releases and download latest GeckoDriver and extract it
- Step 3:
- This is a piece of code as an example of what you need to test and make sure you can use Firefox with 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")
Written by Emanuel Coelho
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Selenium
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#