Exemple de pilote Web Python Selenium tiré de l'erreur de la documentation Django :'f.QueryInterface n'est pas une fonction'
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 ?
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