動作鏈 (action chains)
模擬滑鼠操作,例如點擊左鍵、連擊、點擊右鍵、拖曳等等行為。
from selenium.webdriver.common.action_chains import ActionChains
基本用法
有時候我們的行為是有連續性的一連串的動作,希望將命令像鎖鏈一樣排列好,再依照排列的順序依序執行。所以當命令排入 queue 時,並不會立即執行,會等到呼叫 perform() 函式時,才會真的執行。
常見使用情境
使用範例
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome("./chromedriver")
driver.get("https://example.com")
menu = driver.find_element(By.CSS_SELECTOR, ".nav")
hidden_submenu = driver.find_element(By.CSS_SELECTOR, ".nav #submenu1")
actions = ActionChains(driver)
actions.move_to_element(menu).click(hidden_submenu).perform()
連點
actions.click(element)
for i for range(10):
actions.perform()
API
click(on_element = None)
點擊一下滑鼠左鍵
解說
on_element = None
的意思
click_and_hold(on_element = None)
單擊滑鼠左鍵,然後不鬆開。
context_click(on_element = None)
點擊滑鼠右鍵
double_click(on_element = None)
點擊滑鼠左鍵兩下
drag_and_drop(source,target)
拖拽 A 元素到 B 個元素區域,然後鬆開。
drag_and_drop_by_offset(source, xoffset, yoffset)
拖拽元素位移到某個坐標,然後鬆開。
key_down(value, element = None)
點擊某個鍵盤上的鍵
key_up(value, element = None)
鬆開某個鍵
move_by_offset(xoffset, yoffset)
滑鼠從當前位置移動到某個坐標
move_to_element(to_element)
滑鼠移動到某個元素
move_to_element_with_offset(to_element, xoffset, yoffset)
移動到距離某個元素(左上角坐標)多少距離的位置
pause(seconds)
暫停所有輸入至 n 秒
Pause all inputs for the specified duration in seconds
perform()
執行鏈中的所有動作
release(on_element = None)
在某個元素位置鬆開滑鼠左鍵
reset_actions()
清除已經存儲的操作
send_keys(keys_to_send)
發送某個鍵到當前焦點的元素
send_keys_to_element(element, keys_to_send)
發送某個鍵到指定元素