diff --git a/app/test/test_bug561_wanzikun.py b/app/test/test_bug561_wanzikun.py new file mode 100644 index 0000000..4d420c4 --- /dev/null +++ b/app/test/test_bug561_wanzikun.py @@ -0,0 +1,93 @@ +import time +import uuid +from selenium import webdriver +from selenium.webdriver.common.by import By +from selenium.webdriver.support.ui import WebDriverWait +from selenium.webdriver.support import expected_conditions as EC +from selenium.common.exceptions import UnexpectedAlertPresentException, NoAlertPresentException, NoSuchElementException, TimeoutException +from selenium.webdriver import ActionChains + +def signup(URL, driver): + username = 'TestUser' + str(uuid.uuid1()).split('-')[0].title() + password = '[Abc+123]' + + driver.get(URL) + try: + WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, '注册'))).click() + WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, 'username'))).send_keys(username) + driver.find_element(By.ID, 'password').send_keys(password) + driver.find_element(By.ID, 'password2').send_keys(password) + driver.find_element(By.CLASS_NAME, 'btn').click() + + WebDriverWait(driver, 10).until(EC.alert_is_present()) + driver.switch_to.alert.accept() + print(f"Registration successful: {username}") + except (UnexpectedAlertPresentException, NoAlertPresentException, TimeoutException, NoSuchElementException) as e: + print(f"Error during signup: {e}") + raise + return username, password + +def select_text_in_article(driver): + elem = driver.find_element(By.CSS_SELECTOR, '#article') + + action = ActionChains(driver) + # 从左上角点击并按住 + action.move_to_element_with_offset(elem, 0, 0) + action.click_and_hold() + # 移动到右下角的某个位置(例如,右下角偏移100, 100) + action.move_by_offset(100, 100) + action.release() + action.perform() + +def verify_highlight(driver): + # 检查是否有高亮的元素 + highlighted_elements = driver.execute_script(""" + return Array.from(document.querySelectorAll('#article mark')).map(mark => mark.innerText); + """) + print("Highlighted elements:", highlighted_elements) + return len(highlighted_elements) > 0 + +def test_bug561(): + driver = webdriver.Edge() + try: + driver.maximize_window() + base_url = "http://118.25.96.118:90/" + username, password = signup(base_url, driver) + + time.sleep(3) # 等待页面加载完成 + + select_text_in_article(driver) + if verify_highlight(driver): + print("Text highlighted after selection") + else: + print("No text highlighted after selection") + + # 点击“下一页”按钮 + next_button = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, 'load_next_article'))) + next_button.click() + print("Clicked next article button.") + + # 等待“上一页”按钮加载完成 + WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, 'load_pre_article'))) + print("Next article loaded.") + + # 点击“上一页”按钮 + prev_button = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, 'load_pre_article'))) + prev_button.click() + print("Clicked previous article button.") + + # 确认高亮是否保留 + if verify_highlight(driver): + print("Highlighted text preserved after switching articles") + else: + print("Highlighted text not preserved after switching articles") + + except Exception as e: + print(f"Error during test: {e}") + finally: + driver.quit() + print("Driver closed.") + +if __name__ == "__main__": + test_bug561() + input("Press Enter to continue...") # 保持终端窗口打开