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 from selenium import webdriver from selenium.webdriver.edge.service import Service from selenium.webdriver.common.by import By # 测试登录页面输入密码包含空格的情况 import unittest class Test_Bug528_Tangjiao(unittest.TestCase): def test_login_password_with_space(self): URL = 'http://127.0.0.1:5000' service = Service(executable_path=r'D:\studey\webdrive\edge\msedgedriver.exe') driver = webdriver.Edge(service=service) 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.ID, '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(self): URL = 'http://127.0.0.1:5000' service = Service(executable_path=r'D:\studey\webdrive\edge\msedgedriver.exe') driver = webdriver.Edge(service=service) 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.ID, '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(self): URL = 'http://127.0.0.1:5000' service = Service(executable_path=r'D:\studey\webdrive\edge\msedgedriver.exe') driver = webdriver.Edge(service=service) try: # 1. 先访问登录页面 driver.get(URL + "/login") driver.maximize_window() # 2. 完成登录 WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, 'username')) ).send_keys("student6") # 替换为有效的测试用户名 driver.find_element(By.ID, 'password').send_keys("ad1258@#$") # 替换为有效的密码 driver.find_element(By.ID, 'btn').click() # 4. 现在访问重置密码页面 driver.get(URL + "/reset") # 5. 确保重置页面加载完成 WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, 'old-password')) ) # 6. 执行测试 - 输入包含空格的密码 old_password = driver.find_element(By.ID, 'old-password') old_password.send_keys("ad1258@#$") # 填写其他字段(避免因其他验证失败而影响测试) driver.find_element(By.ID, 'new-password').send_keys("new pass") driver.find_element(By.ID, 're-new-password').send_keys("new pass") # 提交表单 submit_btn = driver.find_element(By.ID, 'submit') submit_btn.click() # 7. 验证预期结果 WebDriverWait(driver, 10).until(EC.alert_is_present()) alert = driver.switch_to.alert assert "输入不能包含空格!" in alert.text alert.accept() except Exception as e: driver.save_screenshot("reset_error.png") pytest.fail(f"测试失败: {e}") finally: driver.quit()