EnglishPal/app/test/test_save_selected_words.py

98 lines
3.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import random
import string
import time
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
HOME_PAGE = "http://127.0.0.1:5000/"
word = []
uname = 'lanhui'
password = 'l0ve1t'
def has_punctuation(s): #用于检查单词是否包含标点符号
return [c for c in s if c in string.punctuation] != []
def login(driver):
driver.get(HOME_PAGE)
assert 'English Pal - Learn English smartly!' in driver.page_source
# 登录
login_elem = driver.find_element_by_link_text('登录')
login_elem.click()
username_input = driver.find_element_by_id('username')
username_input.send_keys(uname)
password_input = driver.find_element_by_id('password')
password_input.send_keys(password)
login_btn = driver.find_element_by_xpath('//button[text()="登录"]') # 找到登录按钮
login_btn.click()
# 确保页面加载完
try:
WebDriverWait(driver, 10).until(
EC.title_is("EnglishPal Study Room for " + uname) # 替换为实际的页面标题
)
except Exception as e:
print("页面加载失败:", e)
driver.quit()
exit()
assert 'EnglishPal Study Room for ' + uname in driver.title
def test_save_selected_word():
global word
# 调用本地chromedriver
driver = webdriver.Chrome(executable_path="C:\Program Files\Google\Chrome\Application\chromedriver.exe")
try:
login(driver)
#点击单词添加到已选单词列表
# 获取文章内容
elem = driver.find_element_by_id('text-content')
essay_content = elem.text
#随机选择单词 长度不小于6个字符并且不包含标点符号
elem = driver.find_element_by_id('selected-words')
word = random.choice(essay_content.split())
while 'font>' in word or 'br>' in word or 'p>' in word or len(word) < 6 or has_punctuation(word):
word = random.choice(essay_content.split())
print(type(word)) #str
elem.send_keys(word) #单词输入到输入框
# 检查单词是否已成功添加到已选列表
# 再次获取<textarea>中的文本内容,以确认单词已被输入
updated_textarea_content = elem.get_attribute('value')
# 检查<textarea>中的内容是否包含输入的单词
assert word == updated_textarea_content
# 检查是否保存到 localStorage
stored_words = driver.execute_script('return localStorage.getItem("selectedWords");')
assert word == stored_words
#检查退出登录、关闭web页面后是否保存已选单词
# 退出登录
elem = driver.find_element_by_link_text('退出')
elem.click()
# 关闭当前标签页
driver.execute_script("window.open('');window.close();")
# 等待一会儿,让浏览器有足够的时间关闭标签页
time.sleep(2)
# 重新打开一个新的标签页
driver.execute_script("window.open('');")
driver.switch_to.window(driver.window_handles[-1]) # 切换到新打开的标签页
login(driver)
elem = driver.find_element_by_id('selected-words')
textarea_content = elem.get_attribute('value')
print(f'word:{word}')
print(f'selected:{textarea_content}')
assert word == textarea_content
except Exception as e:
print("An error occurred:", e)
finally:
# 关闭浏览器
driver.quit()
test_save_selected_word()