注册后使用Selenium导航到网址出现“哎呀”HTML页面

0 投票
1 回答
781 浏览
提问于 2025-04-18 17:54

我正在用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获得正确的错误信息和堆栈跟踪,方便你进行调试。

撰写回答