forked from mrlan/EnglishPal
				
			
							parent
							
								
									4ff33b377f
								
							
						
					
					
						commit
						b68c62a7b8
					
				| 
						 | 
					@ -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...")  # 保持终端窗口打开
 | 
				
			||||||
		Loading…
	
		Reference in New Issue