diff --git a/app/test/test_bug561_wanzikun.py b/app/test/test_bug561_wanzikun.py new file mode 100644 index 0000000..ee692a6 --- /dev/null +++ b/app/test/test_bug561_wanzikun.py @@ -0,0 +1,72 @@ +import time +import pytest +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 NoSuchElementException, TimeoutException +from selenium.webdriver import ActionChains + +# 导入 app/test/conftest.py 中的 signup 函数 +from app.test.conftest import signup + +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(URL, driver): + try: + driver.maximize_window() + username, password = signup(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__": + pytest.main([__file__])