forked from mrlan/EnglishPal
parent
b68c62a7b8
commit
deb5fa9c54
|
@ -1,93 +0,0 @@
|
||||||
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