EnglishPal/app/test/test_bug528_tangjiao.py

127 lines
4.9 KiB
Python

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()