tac*_*ack 9 python django selenium
我有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
Run Code Online (Sandbox Code Playgroud)
我尝试使用classmethod setUp和tearDown:
@classmethod
def setUpClass(cls):
super(MySeleniumTests, cls).setUpClass()
cls.browser = WebDriver()
...
Run Code Online (Sandbox Code Playgroud)
结果是一样的.但是我可以在网上加载任何其他页面self.browser.get('http://example.com').Selenium是最新的.
谢谢!
Rah*_*pta 16
你做错了什么?
LiveServerTestCase8081默认情况下在端口上运行实时服务器,并且您尝试访问端口上的URL 8000.现在,由于没有服务器侦听端口8000,浏览器无法加载页面.
默认情况下,实时服务器的地址是,
localhost:8081并且在测试期间可以访问完整的URLself.live_server_url.
你需要做什么呢?
选项1:更改网址
您可以将URL更改为指向8081端口.
def test_can_navigate_site(self):
self.browser.get('http://localhost:8081') # change the port
assert 'Django' in self.browser.title
Run Code Online (Sandbox Code Playgroud)
选项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
Run Code Online (Sandbox Code Playgroud)
选项3:在端口8000上运行实时服务器
在Django 1.10之前,您可以通过在端口8000上运行liveserver 8000的--liveserver选项传递端口号作为test命令.
$ ./manage.py test --liveserver=localhost:8000 # run liveserver on port 8000
Run Code Online (Sandbox Code Playgroud)
在Django 1.11中删除了此参数,但现在您可以在测试类上设置端口:
class MyTestCase(LiveServerTestCase):
port = 8000
def test_can_navigate_site(self):
....
Run Code Online (Sandbox Code Playgroud)
对于使用Django 1.11( LiveServerTestCase) 的用户:
实时服务器侦听
localhost并绑定到0使用操作系统分配的空闲端口的端口。self.live_server_url在测试期间可以访问服务器的 URL 。
所以...使用self.live_server_url.
小智 5
您正在尝试获取错误的服务器地址:默认情况下,地址为http://localhost:8081.
访问正确地址的最佳方法是使用self.live_server_url:
def test_can_navigate_site(self):
self.browser.get(self.live_server_url)
Run Code Online (Sandbox Code Playgroud)