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...") # 保持终端窗口打开