Selenium系列(四) – 鼠標、鍵盤操作詳細解讀
- 2020 年 3 月 28 日
- 筆記
如果你還想從頭學起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 將源元素拖動指定偏移量
有什麼鍵盤操作?
- 刪除鍵
- 空格鍵
- 製表鍵
- 回退鍵
- 回車鍵
- 全選
- 複製
- 剪切
- 粘貼
- F1-F12
- ……其實就是所有鍵盤都能模擬,包括alt、shift、insert、delete、home等等等…這裡就不舉例了,看源碼很容易懂
#!/usr/bin/env python # -*- coding: utf-8 -*- """ __title__ = __Time__ = 2020/3/27 20:33 __Author__ = 小菠蘿測試筆記 __Blog__ = https://www.cnblogs.com/poloyy/ """ from time import sleep from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Chrome("../resources/chromedriver.exe") driver.maximize_window() # 訪問網址 driver.get("http://www.baidu.com") # 找到搜索框 inputElement = driver.find_element_by_id("kw") # 輸入搜索內容 inputElement.send_keys("小菠蘿測試筆記") # ctrl+a全選 inputElement.send_keys(Keys.CONTROL, "a") sleep(1) # ctrl+c 複製輸入框內容 inputElement.send_keys(Keys.CONTROL, 'c') sleep(1) # ctrl+x 剪切輸入框內容 inputElement.send_keys(Keys.CONTROL, 'x') sleep(1) # ctrl+v 粘貼輸入框內容 inputElement.send_keys(Keys.CONTROL, 'v') sleep(1) # 空格鍵 inputElement.send_keys(Keys.SPACE) sleep(1) # 後退鍵 inputElement.send_keys(Keys.BACKSPACE) sleep(1) # tab鍵 inputElement.send_keys(Keys.TAB) sleep(1) # 回車鍵 inputElement.send_keys(Keys.ENTER) # 刷新頁面 inputElement.send_keys(Keys.F5)
知識點
若要看還有什麼操作,直接ctrl+點擊 Keys 就能查看源碼啦