Python Selenium WebDriver 示例错误:'f.QueryInterface 不是一个函数
我想为我的Django应用写一些Selenium的单元测试。我们已经有很多普通的Python单元测试了。我从Django文档中复制了一个示例Selenium测试(这就像是Selenium的“你好,世界”):
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("/")
但是,当我在本地运行这个测试,或者使用CircleCI(云端测试服务)时,我遇到了这个错误:
======================================================================
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)
我使用的是Django 1.5.5,Python 2.7,Selenium的Python包版本是2.42.1。
这是什么问题呢?我该如何让Selenium正常工作?
1 个回答
3
get
方法需要一个完整的网址。也就是说,必须包含协议(比如http或https)和主机名或IP地址。
self.selenium.get("/")
# becomes
self.selenium.get("http://stackoverflow.com/questions/24011019/")