import pytest from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import NoSuchElementException, TimeoutException # 使用 Pytest 的 fixture 初始化 WebDriver 和 URL @pytest.fixture(scope="module") def driver(): # 初始化WebDriver driver = webdriver.Edge(executable_path=r'D:\codeapp\python-3.8.5\Lib\site-packages\selenium\webdriver\edge\MicrosoftWebDriver.exe') driver.implicitly_wait(10) yield driver # yield 语句之后的代码在测试用例执行完毕后运行 driver.quit() # 测试用例执行完毕后关闭 WebDriver @pytest.fixture(scope="module") def URL(): return 'http://127.0.0.1:5000' # 测试登录页面输入密码包含空格的情况 def test_login_password_with_space(driver, URL): try: driver.get(URL+"/login") # 输入用户名 username_elem = driver.find_element_by_id('username') username_elem.send_keys("test_user") # 输入包含空格的密码 password_elem = driver.find_element_by_id('password') password_elem.send_keys("password with space") # 提交登录表单 elem = driver.find_element_by_class_name('btn') # 找到提交按钮 elem.click() # 显式等待直到警告框出现 WebDriverWait(driver, 10).until(EC.alert_is_present()) # 检查是否弹出警告框 alert = driver.switch_to.alert assert "输入不能包含空格!" in alert.text except (NoSuchElementException, TimeoutException) as e: pytest.fail("页面元素未找到或超时: {}".format(e)) # 测试注册页面输入密码包含空格的情况 def test_signup_password_with_space(driver, URL): try: driver.get(URL+"/signup") # 输入用户名 username_elem = driver.find_element_by_id('username') username_elem.send_keys("new_user") # 输入包含空格的密码 password_elem = driver.find_element_by_id('password') password_elem.send_keys("password with space") # 再次输入密码 password2_elem = driver.find_element_by_id('password2') password2_elem.send_keys("password with space") # 提交注册表单 elem = driver.find_element_by_class_name('btn') # 找到提交按钮 elem.click() # 显式等待直到警告框出现 WebDriverWait(driver, 10).until(EC.alert_is_present()) # 检查是否弹出警告框 alert = driver.switch_to.alert assert "输入不能包含空格!" in alert.text except (NoSuchElementException, TimeoutException) as e: pytest.fail("页面元素未找到或超时: {}".format(e)) # 测试重设密码页面输入新密码包含空格的情况 def test_reset_password_with_space(driver, URL): try: driver.get(URL+"/reset") # 输入用户名 username_elem = driver.find_element_by_id('username') username_elem.send_keys("test_user") # 输入包含空格的密码 password_elem = driver.find_element_by_id('password') password_elem.send_keys("password with space") # 提交重设密码表单 elem = driver.find_element_by_class_name('btn') # 找到提交按钮 elem.click() # 显式等待直到警告框出现 WebDriverWait(driver, 10).until(EC.alert_is_present()) # 检查是否弹出警告框 alert = driver.switch_to.alert assert "输入不能包含空格!" in alert.text except (NoSuchElementException, TimeoutException) as e: pytest.fail("页面元素未找到或超时: {}".format(e))