如果你還想從頭學起Selenium,可以看看這個系列的文章哦!
https://www.cnblogs.com/poloyy/category/1680176.html
其次,如果你不懂前端基礎知識,需要自己去補充哦,博主暫時沒有總結(雖然我也會,所以我學selenium就不用復習前端了哈哈哈...)
引入HTML頁面
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>小菠蘿測試筆記</title> </head> <body> <a>用戶名:</a> <input id="username" class="username"> <a>密碼</a> <input id="password" name="password"> <button class="login">登錄</button> <br> <p>測試啦</p> <p>再一次測試啦</p> <br> <a href="https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=osari_pc_1" target="_blank" id="virus-202s0" class="mnav sp dot">終極抗擊肺炎啊</a> <a href="https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=osari_pc_1" target="_blank" id="virus-2020" class="mnav sp dot">抗擊肺炎</a> <a href="https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=osari_pc_1" target="_blank" id="virus-202s0" class="mnav sp dot">抗擊肺炎</a> <div> <ul> <li class="li">111</li> <li class="li">222</li> <li class="li">333</li> </ul> <ul> <li>aaa</li> <li>bbb</li> <li>ccc</li> </ul> </div> </body> </html>
背景
用selenium做自動化,有時候會遇到需要模擬鼠標操作才能進行的情況,比如單擊、雙擊、點擊鼠標右鍵、拖拽等等。
而selenium給我們提供了一個類來處理這類事件—— ActionChains
有哪些鼠標操作呢?
- 執行操作
- 左鍵、右鍵單擊、雙擊
- 鼠標懸停到元素、偏移處
- 長按
- 拖動
點擊右邊目錄即可跳轉哦! -------------->>>>>>>>>>
執行操作
perform() 方法
主要是調用其他操作方法后,都要再次調用這個方法,表示執行某個鼠標操作,后面會有例子
左鍵、右鍵單擊、雙擊
from selenium.webdriver import ActionChains from selenium import webdriver driver = webdriver.Chrome("../resources/chromedriver.exe") # 創建實例 chains = ActionChains(driver) # 訪問網址 driver.get("file:///C:/test.html") # 登錄按鈕 username = driver.find_element_by_id("username") login_btn = driver.find_element_by_class_name("login") password = driver.find_element_by_id("password") # 左鍵點擊 chains.click(username).perform() # 右鍵點擊 chains.context_click(username).perform() # 雙擊 chains.double_click(password).perform()
鼠標懸停到元素、偏移處
# 懸停到設置按鈕 chains.move_to_element(login_btn).perform() # 懸停到指定偏移量 chains.move_to_element_with_offset(login_btn, 2, 2).perform()
知識點
move_to_element_with_offset() 是先找到元素,再根據元素位置偏移指定偏移量
長按
# 長按 chains.click_and_hold(login_btn).perform()
拖動
# 拖動1 chains.drag_and_drop(source=username, target=password) # 拖動2 chains.drag_and_drop_by_offset(source=username, xoffset=20, yoffset=20)
知識點
- drag_and_drop 將源元素拖動到目標元素處
- drag_and_drop_by_offset 將源元素拖動指定偏移量