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