diff --git a/app/static/wordfreqapp.db b/app/static/wordfreqapp.db deleted file mode 100644 index 312881a..0000000 Binary files a/app/static/wordfreqapp.db and /dev/null differ diff --git a/app/test/conftest.py b/app/test/conftest.py index 29f6431..b7cc097 100644 --- a/app/test/conftest.py +++ b/app/test/conftest.py @@ -9,5 +9,15 @@ def URL(): @pytest.fixture def driver(): - my_driver = webdriver.Edge() # uncomment this line if you wish to run the test on your laptop + my_driver = webdriver.Edge() # uncomment this line if you wish to run the test on your laptop return my_driver + + +@pytest.fixture +def UNAME(): + return 'lanhui' + + +@pytest.fixture +def PASSWORD(): + return 'l0ve1t' diff --git a/app/test/test_save_selected_words.py b/app/test/test_save_selected_words.py index 4dc5883..2ecb559 100644 --- a/app/test/test_save_selected_words.py +++ b/app/test/test_save_selected_words.py @@ -1,98 +1,56 @@ import random import string -import time - -from selenium import webdriver -from selenium.webdriver.support.wait import WebDriverWait +from selenium.webdriver.common.by import By +from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC +from conftest import driver, URL, UNAME, PASSWORD -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 has_punctuation(s): + return any(c in string.punctuation for c in s) -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) +def login(driver, home, uname, password): + driver.get(home) + WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, '登录'))).click() + driver.find_element(By.ID, 'username').send_keys(uname) + driver.find_element(By.ID, 'password').send_keys(password) + driver.find_element(By.XPATH, '//button[text()="登录"]').click() + WebDriverWait(driver, 10).until(EC.title_is(f"EnglishPal Study Room for {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() +def select_valid_word(driver): + elem = driver.find_element(By.ID, 'text-content') + essay_content = elem.text + valid_word = random.choice([word for word in essay_content.split() if len(word) >= 6 and not has_punctuation( + word) and 'font>' not in word and 'br>' not in word and 'p>' not in word]) + driver.find_element(By.ID, 'selected-words').send_keys(valid_word) + return valid_word - # 确保页面加载完 + +def test_save_selected_word(driver, URL, UNAME, PASSWORD): 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) #单词输入到输入框 - - # 检查单词是否已成功添加到已选列表 - # 再次获取