在注册后使用Selenium导航到一个url会导致应用程序出现一个“哎哟”的html页面

2024-04-26 00:22:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用selenium为我的网站构建测试,我的网站是基于django构建的,因此内置了测试用例。在

我使用的是djangosliveservertestcase,就像他们的文档建议的那样。我已经成功地使用这段代码运行了测试用例

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/link时,浏览器中出现了一个错误,它只是一个HTML屏幕,上面说“哎哟”,我认为这是因为我重新驱动的速度太快,所以我在中添加了wait子句,以等待django admin id标题在重新驱动之前找到。但这并没有解决问题。在

an image of what the "whoops" screen looks like.

有人知道这个错误是什么吗?我怎样才能阻止它发生?!在


Tags: djangofromtestimportselfidbydef
1条回答
网友
1楼 · 发布于 2024-04-26 00:22:05

只要澄清这篇文章,我已经设法解决了这个问题。在

Debug=True,在标准设置文件中不起作用,您必须在正在构建的testclass的init方法中提供,如下所示:

def __init__(self, *args, **kwargs):
     super(FOOTestCases, self).__init__(*args, **kwargs)
     if settings.DEBUG == False:
         settings.DEBUG = True

这将为您提供正确的错误消息,并通过selenium进行堆栈跟踪,以便您进行调试。在

相关问题 更多 >