Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Force selenium to use the portable firefox application

I have installed firefox 14 and has firefox portable version 25.0.1 on the machine, where I run tests for a web site.

Due to a limitation in the site I'm testing, I cannot run my tests on firefox 14 installation. Also I cannot upgrade the firefox 14 installation.

So I'm looking into a solution where I can use this portable firefox version instead of the installed firefox 14 version.

How should I force selenium to use this portable version and not the installed version? If someone could direct me to some descriptive article/blog that would be great.

My code goes like:-

* Variables *

${SELENIUM_HUB}     remote_url=http://127.0.0.1:4444/wd/hub
${BROWSER}      firefox D:\\Firefox Portable\\FirefoxPortable\\firefox.exe
${CLIENT_URL}       https://abcd.aline.local

Open Browser    ${CLIENT_URL}    ${BROWSER}   ${SELENIUM_HUB}

Specifying path as, D:/Firefox Portable/FirefoxPortable/firefox.exe does not work because '/' get's removed. Any thoughts?

PS: python is the used language

like image 410
Chamz Des Avatar asked Mar 10 '14 00:03

Chamz Des


People also ask

How do I use Firefox options in selenium?

FirefoxOptions options = new FirefoxOptions(); driver = new RemoteWebDriver(new URL("http://10.x.x.x:4444/wd/hub"), options); When you start your Selenium Nodes, it displays a log information on using new FirefoxOptions preferred to 'DesiredCapabilities. firefox() along with all other browser options.

Which Firefox browser needs GeckoDriver in selenium?

Gecko driver works with Firefox version 47 or above. It can be resolved by updating Firefox version to 47 or above.

Can I use Selenium with Firefox?

Selenium uses Firefox Driver to link the test cases with the Firefox browser.


2 Answers

You can specify the path to the firefox binary you want with the FirefoxBinary class passed as the firefox_binary parameter when instantiating your Firefox webdriver.

http://selenium.googlecode.com/svn/trunk/docs/api/py/webdriver_firefox/selenium.webdriver.firefox.firefox_binary.html

and

http://selenium.googlecode.com/svn/trunk/docs/api/py/webdriver_firefox/selenium.webdriver.firefox.webdriver.html#module-selenium.webdriver.firefox.webdriver

Make sure the path to the binary is correct with something like:

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

firefox_binary = FirefoxBinary("D:\\Firefox Portable\\FirefoxPortable\\firefox.exe")
driver = webdriver.Firefox(firefox_binary=firefox_binary)

Using robotframework something like:

${firefox_binary}=  Evaluate    sys.modules['selenium.webdriver.firefox.firefox_binary'].FirefoxBinary("D:\\Firefox Portable\\FirefoxPortable\\firefox.exe")    sys, selenium.webdriver.firefox_binary
Create Webdriver    Firefox    firefox_binary=${firefox_binary}

may work.

like image 121
Andrew Adams Avatar answered Oct 18 '22 20:10

Andrew Adams


Selenium2Library does not let you specify browser path in the Open Browser keyword, but it does have remote_url argument that can be useful. Before Selenium2Library got proper PhantomJS support the way to use PhantomJS was through that remote_url, like this http://spage.fi/phantomjs

So in theory we should be able to use portable Firefox first by launching our Firefox and then connecting to that using the remote_url. Something like this.

Start Process    c:\\path\\to\\portable\\firefox.exe
Open Browser    http://google.com    firefox    main browser    http://localhost:${firefox webdriver port}

The problem is that I do not know what webdriver port Firefox uses by default or how to specify it. Also installing the webdriver.xpi addon for Firefox might be necessary. The add-on can be found from here C:\Python27\Lib\site-packages\selenium\webdriver\firefox or what ever is the place where your python installation is.

There is a Create Webdriver keyword in Selenium2Library which does allow us to specify firefox_binary (among other arguments). So in theory

Create Webdriver    Firefox    firefox_binary=c:\\path\\to\\portable\\firefox.exe

Should work, but all I get from that is "AttributeError: 'str' object has no attribute 'launch_browser'".

Sorry that I could not figure out way to do this, but by digging a bit deeper about Firefox webdriver port or how Create Webdriver actually works you might get further.

like image 38
Harri Avatar answered Oct 18 '22 20:10

Harri