selenium和LiveServerTestCase出现问题。当我运行./manage.py test functional_tests它时,它会加载一个页面“标题:问题加载页面。正文:无法连接…”
./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来设置和拆箱:
@classmethod def setUpClass(cls): super(MySeleniumTests, cls).setUpClass() cls.browser = WebDriver() ...
结果是一样的。但是我可以使用加载Web中的任何其他页面self.browser.get('http://example.com')。selenium是最新的。
self.browser.get('http://example.com')
谢谢!
你做错了什么?
LiveServerTestCase8081默认情况下,在port上运行实时服务器,而您尝试访问port上的url 8000。现在,由于没有服务器在端口8000上进行侦听,因此浏览器无法加载该页面。
LiveServerTestCase
8081
8000
从LiveServerTestCase文档:
默认情况下,实时服务器的地址为, localhost:8081 并且可以在测试过程中使用来访问完整的URL self.live_server_url 。
localhost:8081
self.live_server_url
您需要做什么呢?
选项1:更改网址
您可以更改网址以指向8081端口。
def test_can_navigate_site(self): self.browser.get('http://localhost:8081') # change the port assert 'Django' in self.browser.title
选项2:使用实时服务器网址
您可以live_server_url在测试用例中使用@,如@yomytho所指出的。
live_server_url
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之前,您可以通过选项将端口号传递8000给test命令,--liveserver以在端口8000上运行liveserver。
--liveserver
$ ./manage.py test --liveserver=localhost:8000 # run liveserver on port 8000
此参数已在Django1.11中删除,但现在您可以在测试类上设置端口:
class MyTestCase(LiveServerTestCase): port = 8000 def test_can_navigate_site(self): ....