前言
我們在做 Web 自動化的時候,有時候頁面的元素不需要我們點擊,值需要把滑鼠移動上去就能展示各種資訊,
這個時候我們可以通過操作滑鼠來實作,接下來我們來講一下使用 selenium 做 Web 自動化的時候如何來操作滑鼠,
滑鼠操作,我們可以使用 selenium 的 ActionChains 類來實作,我們先來認識一下這個類,
01.ActionChains 類常用方法
-
click_and_hold(on_element=None) :點擊滑鼠左鍵,不松開
-
context_click(on_element=None):點擊滑鼠右鍵
-
double_click(on_element=None):雙擊滑鼠左鍵
-
drag_and_drop(source, target):拖拽到某個元素然后松開
-
move_by_offset(xoffset, yoffset):滑鼠從當前位置移動到某個坐標
-
move_to_element(to_element) :滑鼠移動到某個元素
-
release(on_element=None):在元素上釋放按住的滑鼠按鈕
-
pause(seconds):暫停操作(秒)
02.ActionChains 類所有方法
-
perform(self)–執行滑鼠操作方法
-
reset_actions()–清楚操作子令
-
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):移動到
-
距某個元素(左上角坐標)多少距離的位置
-
pause(seconds):暫停操作(秒)
-
release(on_element=None):在元素上釋放按住的滑鼠按鈕
-
send_keys(*keys_to_send):發送某個鍵到當前焦點的元素
-
send_keys_to_element(element, *keys_to_send) :發送某個鍵到指定元素
03.ActionChains 使用步驟
- 實體化:actions = ActionChains(driver)
- 呼叫滑鼠操作方法:actions.move_to_element(menu)
- 執行滑鼠操作方法:actions.perform()
04.實戰
代碼做的事情:
- 打開測驗網頁:https://www.runoob.com/try/try.php?filename=tryjs_events_mouseover
切換 iframe - 定位到系結滑鼠事件的 div
- 將滑鼠移動到 div 上觸發事件(可以觀察到 div 上字會發生變化)
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
driver = webdriver.Chrome(r"D:\chromeDriver\71\chromedriver71.exe")
driver.implicitly_wait(5)
driver.get(url="https://www.runoob.com/try/try.php?filename=tryjs_events_mouseover")
driver.maximize_window()
#切換iframe
driver.switch_to.frame(driver.find_element_by_xpath('//iframe[@id="iframeResult"]'))
#元素定位
ele = driver.find_element_by_xpath('//div[@οnmοuseοver="mOver(this)"]')
#移動滑鼠到元素上觸發事件
actions = ActionChains(driver)
actions.move_to_element(ele)
actions.perform()
time.sleep(5)
driver.quit()
05.總結
-
ActionChains 類中其他方法使用方式都一樣,大家有空可以試一下
-
ActionChains 類中有很多方法,但是常用的并不多,上面已經列出,掌握常用方法即可
-
特別注意:ActionChains 的執行原理,當你呼叫 ActionChains 的方法時,不會立即執行,而是會將所有的操作按順序存放在一個佇列里,當你呼叫 perform()方法時,佇列中的時間會依次執行,
-
ActionChains 類中的方法可以使用鏈式呼叫,大家思考思考自己拓展吧(其實很簡單),
當然,這里我也給大家準備了自動化測驗學習的配套資源:

對于想學習軟體測驗或者進階自動化測驗的朋友應該會很有幫助,關注我微信公眾號:程式員二黑,免費獲取!
機會只垂青有準備的人,這是一個靠本事的社會,有時候,你之所以發展得不好,不是因為沒有機遇,而是因為你沒有準備好,導致機遇與你擦肩而過,如果你想要學習,什么時候開始都不晚,而不是瞻前顧后,你只要用盡全力,剩下的交給時間!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/333761.html
標籤:其他
上一篇:反向計算一個div內的孩子的數量
