注册后使用Selenium导航到网址出现“哎呀”HTML页面
我正在用Selenium为我的网站构建测试,我的网站是用Django搭建的,因此已经内置了一些测试用例。
我按照文档的建议,使用了Django的LiveServerTestCase来进行Selenium测试。我用以下代码成功运行了测试用例:
import sys
2
3 from django.test import LiveServerTestCase
4
5 #selenium webdriver for web simulation and testing
6 from selenium import webdriver
7 from selenium.webdriver.common.keys import Keys
8 from selenium.webdriver.support.ui import WebDriverWait
9 from selenium.webdriver.common.by import By
10 from selenium.webdriver.support import expected_conditions as EC
11 from users.models import User
12
13 class DashboardTestCases(LiveServerTestCase):
14
15 @classmethod
16 def setUpClass(cls):
17 cls.driver = webdriver.Firefox()
18 super(DashboardTestCases, cls).setUpClass()
19
20 @classmethod
21 def tearDownClass(cls):
22 super(DashboardTestCases, cls).tearDownClass()
23 user = User.objects.filter(username="test")
24 if user.exists():
25 user.delete()
26 cls.driver.quit()
27
28 def test_base(self):
29 self.driver.get(self.live_server_url)
30 self.assertIn("neury", self.driver.title)
31
32 def test_sign_in(self):
33 user = User.objects.create_superuser("test", "test@test.com", "test123")
34 print(user.username)
35 self.driver.get('%s%s' % (self.live_server_url, '/admin/'))
36 user = self.driver.find_element_by_id('id_username')
37 user.send_keys('test')
38 password = self.driver.find_element_by_id('id_password')
39 password.send_keys('test123')
40 submit = self.driver.find_element_by_class_name('grp-button')
41 submit.click()
42 try:
43 element = WebDriverWait(self.driver, 10).until(
44 EC.presence_of_element_located((By.ID, 'grp_admin_title'))
45 )
46 finally:
47 self.driver.get('%s%s' % (self.live_server_url, '/datasets/'))
这个测试检查了初始的主页是否加载成功,然后创建了用户,并可以登录到管理页面。但是,当我尝试访问/datasets/链接时,浏览器出现了一个错误,显示的只是一个HTML页面,上面写着“哎呀”。我猜这是因为我重定向得太快了,所以我在代码中添加了等待的条件,想等到Django的admin-id-title被找到后再进行重定向。但这并没有解决问题。
有没有人知道这个错误可能是什么,以及我该如何避免这个问题呢?
1 个回答
0
我来澄清一下这个帖子,我已经解决了这个问题。
在标准设置文件中,Debug = True 是不起作用的,你需要在你正在构建的测试类的 init 方法中提供这个设置,像这样:
def __init__(self, *args, **kwargs):
super(FOOTestCases, self).__init__(*args, **kwargs)
if settings.DEBUG == False:
settings.DEBUG = True
这样做之后,你就能通过selenium获得正确的错误信息和堆栈跟踪,方便你进行调试。