我对selenium和LiveServerTestCase有个问题。当我运行./manage.py test functional_tests
时,它会加载一个页面“标题:问题加载页.正文:无法连接.”
functional_tests.py:
from selenium import webdriver
from django.test import LiveServerTestCase
class GeneralFunctionalTests(LiveServerTestCase):
def setUp(self):
self.browser = webdriver.Chrome()
self.browser.implicitly_wait(3)
def tearDown(self):
self.browser.quit()
def test_can_navigate_site(self):
self.browser.get('http://localhost:8000')
assert 'Django' in self.browser.title
我尝试使用classmethod来实现setUp和tearDown:
@classmethod
def setUpClass(cls):
super(MySeleniumTests, cls).setUpClass()
cls.browser = WebDriver()
...
结果是一样的。但是我可以用self.browser.get('http://example.com')
在网络上加载任何其他页面。硒是最新的。
谢谢!
发布于 2015-09-28 19:12:35
你做错什么了?
默认情况下,LiveServerTestCase
在端口8081
上运行活动服务器,您正在尝试访问端口8000
上的url。现在,由于没有服务器监听端口8000,浏览器无法加载页面。
来自医生:
默认情况下,活动服务器的地址是
localhost:8081
,在使用self.live_server_url
**.**进行测试时可以访问完整的URL
你需要做什么?
选项1:更改url
可以将url更改为指向8081
端口。
def test_can_navigate_site(self):
self.browser.get('http://localhost:8081') # change the port
assert 'Django' in self.browser.title
选项2:使用活动服务器url
正如live_server_url
所指出的,您可以在测试用例中使用@yomytho。
def test_can_navigate_site(self):
self.browser.get(self.live_server_url) # use the live server url
assert 'Django' in self.browser.title
选项3:在端口8000上运行活动服务器
在Django 1.10之前,您可以通过--liveserver
选项将端口号作为--liveserver
传递给test命令,以便在端口8000上运行liveserver。
$ ./manage.py test --liveserver=localhost:8000 # run liveserver on port 8000
这个参数是被移至Django 1.11,但是现在可以在测试类上设置端口:
class MyTestCase(LiveServerTestCase):
port = 8000
def test_can_navigate_site(self):
....
发布于 2015-09-28 12:42:29
您正试图获取错误的服务器地址:http://localhost:8081
。
访问正确地址的最佳方法是使用self.live_server_url
:
def test_can_navigate_site(self):
self.browser.get(self.live_server_url)
发布于 2017-06-28 01:42:57
对于使用Django 1.11
(LiveServerTestCase
)的用户:
活动服务器监听
localhost
并绑定到端口0
,该端口使用操作系统分配的空闲端口。在测试期间,可以使用self.live_server_url
访问服务器的URL。
所以..。使用self.live_server_url
。
https://stackoverflow.com/questions/32831049
复制相似问题