Python Selenium 2.39 and Firefox 26

firefox, python, python-unittest, selenium-webdriver, web2py

Solution

i solved the problem in this way

Get a portable version of Firefox from here (get a version which was working with you for example i got Firefox version 23) and extract it to specific directory

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

binary = FirefoxBinary(os.path.join('Pathto','FirefoxPortable','FirefoxPortable.exe'))
driver = webdriver.Firefox(firefox_binary=binary)

this has been tested with selenium `2.37.2` and `2.39.0`

Enjoy!

Problem

im trying to execute some selenium with unittest scripts but i get the following error ``` Starting at: "Sat Dec 07 14:43:17 2013" E ====================================================================== ERROR: test_template (__main__.ManageTemplates) ---------------------------------------------------------------------- Traceback (most recent call last): File "template.py", line 70, in tearDown self.driver.quit() File "C:\Program Files (x86)\Python27\lib\site-packages\selenium-2.38.1-py2.7.egg\selenium\webdriver\firefox\webdriver.py", line 66, in quit RemoteWebDriver.quit(self) File "C:\Program Files (x86)\Python27\lib\site-packages\selenium-2.38.1-py2.7.egg\selenium\webdriver\remote\webdriver.py", line 454, in quit self.execute(Command.QUIT) File "C:\Program Files (x86)\Python27\lib\site-packages\selenium-2.38.1-py2.7.egg\selenium\webdriver\remote\webdriver.py", line 162, in execute response = self.command_executor.execute(driver_command, params) File "C:\Program Files (x86)\Python27\lib\site-packages\selenium-2.38.1-py2.7.egg\selenium\webdriver\remote\remote_connection.py", line 350, in execute return self._request(url, method=command_info[0], data=data) File "C:\Program Files (x86)\Python27\lib\site-packages\selenium-2.38.1-py2.7.egg\selenium\webdriver\remote\remote_connection.py", line 381, in _request self._conn.request(method, parsed_url.path, data, headers) File "C:\Program Files (x86)\Python27\lib\httplib.py", line 973, in request self._send_request(method, url, body, headers) File "C:\Program Files (x86)\Python27\lib\httplib.py", line 1001, in _send_request self.putrequest(method, url, **skips) File "C:\Program Files (x86)\Python27\lib\httplib.py", line 871, in putrequest raise CannotSendRequest() CannotSendRequest ---------------------------------------------------------------------- Ran 1 test in 766.686s FAILED (errors=1) ``` the errors accure in template.py at line 70 in tearDown() function, which is a default unittest function autogenerated with Selenium-IDE ``` def tearDown(self): self.driver.quit() self.assertEqual([], self.verificationErrors) ``` EDIT: This Problem happened when i updated Firefox to 26, even when i updated to selenium 2.39.0 the problem didnt go away Source: ``` import unittest from os import path from config import config from selenium import webdriver from selenium.webdriver.common.keys import Keys from PyWebBotClass import PyWebBot from selenium.webdriver.support.ui import WebDriverWait from selenium.common.exceptions import TimeoutException from os import listdir, environ from os.path import isfile, join import time class ManageReceivers(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.driver.implicitly_wait(10) self.base_url = config['baseurl'] self.verificationErrors = [] self.accept_next_alert = True def setup_bot(self, f): self.bot = PyWebBot(self.driver, path.join(config['configs'],f)) self.bot.set_LogPath(config['LogPath']) self.bot.set_ScreenshotPath(config['screenshots']) self.bot.set_ConfigBaseURL(config['baseurl']) def test_receiver_profile(self): self.imported = False for f in listdir(config['configs']): if isfile(join(config['configs'],f)): self.setup_bot(f) if not self.imported: self.bot.gotourl('csv2db/import_db_1') self.imported = True self.bot.goto('login') self.bot.JS__fillform('login') self.bot.goto('receiver_profile') self.bot.JS__fillform('receiver_profile') try: self.bot._driver.execute_script("var e = $('.icon-zoom-in'); e[e.length-1].click()") except: print "unable to access selector id = view" pass try: self.bot._driver.execute_script("var e = $('.icon-pencil'); e[e.length-1].click()") except: print "unable to access selector id = edit" pass self.bot.JS__fillform('receiver_profile') self.bot.goto('logout') def is_element_present(self, how, what): try: self.driver.find_element(by=how, value=what) except NoSuchElementException, e: return False return True def close_alert_and_get_its_text(self): try: alert = self.driver.switch_to_alert() if self.accept_next_alert: alert.accept() else: alert.dismiss() return alert.text finally: self.accept_next_alert = True @classmethod def setUpClass(cls): environ['NO_PROXY'] = '127.0.0.1' # IP-address of Jenkins server def tearDown(self): self.driver.quit() self.assertEqual([], self.verificationErrors) if __name__ == '__main__': print('Starting at: "%s"' % time.asctime()) unittest.main() print('Finished at: "%s"' % time.asctime()) ```

Original source

Related problems