前提:
一般人用selenium自動化時,會用到模擬鼠標操作的情況,像單擊,雙擊,右擊,左擊啊等,這個時候我們就要用到ActionChains了。
內容:
1.ActionChains用法整理
click(on_element=None) ——單擊鼠標左鍵 click_and_hold(on_element=None) ——點擊鼠標左鍵,不松開 context_click(on_element=None) ——點擊鼠標右鍵 double_click(on_element=None) ——雙擊鼠標左鍵 drag_and_drop(source, target) ——拖拽到某個元素然后松開 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) ——移動到距某個元素(左上角坐標)多少距離的位置 perform() ——執行鏈中的所有動作 release(on_element=None) ——在某個元素位置松開鼠標左鍵 send_keys(*keys_to_send) ——發送某個鍵到當前焦點的元素 send_keys_to_element(element, *keys_to_send) ——發送某個鍵到指定元素
2.ActionChains的用法
了解了以上的方法,我們來將一下它的用法,它有兩種寫法:
第一個是鏈式寫法,顧名思義連在一起寫:
例子:
from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains driver = webdriver.Chrome() driver.get("https://www.baidu.cn") # 定位到要懸停的元素 above = driver.find_element_by_link_text("設置") # 對定位到的元素執行鼠標懸停操作 ActionChains(driver).move_to_element(above).perform()
第二個是分布式寫發,顧名思義就是分開寫:
from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains driver = webdriver.Chrome() driver.get("https://www.baidu.cn") # 定位到要懸停的元素 above = driver.find_element_by_link_text("設置") # 對定位到的元素執行鼠標懸停操作 action=ActionChains(driver) action.move_to_element(above) action.perform()
- from selenium.webdriver import ActionChains
導入提供鼠標操作的 ActionChains 類。
- ActionChains(driver)
調用 ActionChains()類, 將瀏覽器驅動 driver 作為參數傳入。
- move_to_element(above)
context_click()方法用於模擬鼠標右鍵操作, 在調用時需要指定元素定位。
- perform()
執行所有 ActionChains 中存儲的行為, 可以理解成是對整個操作的提交動作。
