Exemple de pilote Web Python Selenium tiré de l'erreur de la documentation Django :'f.QueryInterface n'est pas une fonction'

StackOverflow https://stackoverflow.com//questions/24011019

Question

Je souhaite écrire des tests unitaires Selenium pour l'application Django.Nous avons déjà de nombreux tests unitaires Python réguliers.j'ai copié le exemple de test de sélénium de la documentation Django (ce qui n'est guère plus qu'un « bonjour tout le monde » pour le sélénium ):

from selenium.webdriver.firefox.webdriver import WebDriver
from django.test import LiveServerTestCase


class MySeleniumTestCase(LiveServerTestCase):
    @classmethod
    def setUpClass(cls):
        cls.selenium = WebDriver()
        super(MySeleniumTestCase, cls).setUpClass()

    @classmethod
    def tearDownClass(cls):
        cls.selenium.quit()
        super(MySeleniumTestCase, cls).tearDownClass()

    def test_simple(self):
        self.selenium.get("/")

Cependant, lorsque je l'exécute localement ou que j'utilise CercleCI (tests dans le cloud en tant que service), j'obtiens cette erreur :

======================================================================
ERROR: test_simple (proj.lib.tests.MySeleniumTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/ubuntu//proj/proj/lib/tests.py", line 1347, in test_simple
    self.selenium.get("/")
  File "/home/ubuntu/proj/venv/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 185, in get
    self.execute(Command.GET, {'url': url})
  File "/home/ubuntu/proj/venv/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 173, in execute
    self.error_handler.check_response(response)
  File "/home/ubuntu/proj/venv/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 164, in check_response
    raise exception_class(message, screen, stacktrace)
WebDriverException: Message: u'f.QueryInterface is not a function' ; Stacktrace: 
    at FirefoxDriver.prototype.get (file:///tmp/tmpXXrLF6/extensions/fxdriver@googlecode.com/components/driver_component.js:9333)
    at DelayedCommand.prototype.executeInternal_/h (file:///tmp/tmpXXrLF6/extensions/fxdriver@googlecode.com/components/command_processor.js:11455)
    at DelayedCommand.prototype.executeInternal_ (file:///tmp/tmpXXrLF6/extensions/fxdriver@googlecode.com/components/command_processor.js:11460)
    at DelayedCommand.prototype.execute/< (file:///tmp/tmpXXrLF6/extensions/fxdriver@googlecode.com/components/command_processor.js:11402)

Il s'agit de Django 1.5.5, python 2.7, package python sélénium 2.42.1

Quel est le problème?Comment faire fonctionner le sélénium ?

Était-ce utile?

La solution

Le get La méthode nécessite une URL complète.C'est-à-dire l'URI comprenant le protocole et le nom d'hôte/IP.

self.selenium.get("/")
# becomes
self.selenium.get("http://stackoverflow.com/questions/24011019/")
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top