selenium給我們提供了一個類來處理這類事件——ActionChains。
鼠標的自動化操作:
首先要引入包
from selenium.webdriver import ActionChains
操作如下:
ActionChains可以對需要模擬鼠標操作才能進行的情況,比如單擊、雙擊、點擊鼠標右鍵、拖拽等等進行操作。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) ——發送某個鍵到指定元素
demo小測試(進入百度搜索自動化,雙擊按鈕選擇文字)
from selenium import webdriver
from time import sleep
from selenium.webdriver import ActionChains
driver = webdriver.Firefox()
driver.maximize_window()
# driver.implicitly_wait(40)
driver.get("https://www.baidu.com/")
driver.find_element_by_id("kw").send_keys("自動化")
x=driver.find_element_by_id("kw")
sleep(2)
ActionChains(driver).double_click(x).perform()
sleep(2)
如圖
上面還有很多鼠標操作的方法,可以試試。
下面介紹一下鍵盤的操作方法
鍵盤的自動化操作
首先引入包------
from selenium.webdriver.common.keys import Keys
方法如下:
send_keys() 輸入框輸入內容
——如:driver.find_element_by_id("id").send_keys("XXX")
send_keys(Keys.BACK_SPACE) 向左刪除一個字符 ——如:driver.find_element_by_id("id").send_keys("XXX")
send_keys(Keys.SPACE) 輸入空格
——如:driver.find_element_by_id("id").send_keys(Keys.SPACE)
send_keys(Keys.CONTROL,‘a‘) ctrl+a 全選輸入框的內容
——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,‘a‘)
send_keys(Keys.CONTROL,‘x‘) ctrl+x 剪切輸入框的內容
——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,‘x‘)
send_keys(Keys.CONTROL,‘v‘) ctrl+v 粘貼到輸入框
——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,‘v‘)
send_keys(Keys.ENTER) 回車代替點擊
——如:driver.find_element_by_id("id").send_keys(Keys.ENTER)
send_keys(Keys.TAB) 製表鍵(Tab)
——如:driver.find_element_by_id("id").send_keys(Keys.TAB)
send_keys(Keys.ESCAPE) 回退鍵(Esc)
——如:driver.find_element_by_id("id").send_keys(Keys.ESCAPE)
send_keys(Keys.CONTROL,‘c‘) 複製
——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,‘c‘)
跟鼠標操作類似,只是要注意使用方法
一個小的demo(全鍵盤操作複製自動化粘貼2次搜索)如下
from selenium import webdriver
from time import sleep
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.maximize_window()
# driver.implicitly_wait(40)
driver.get("https://www.baidu.com/")
driver.find_element_by_id("kw").send_keys("自動化")
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,"a")
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,"c")
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,"v")
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,"v")
driver.find_element_by_id("kw").send_keys(Keys.TAB)
driver.find_element_by_id("kw").send_keys(Keys.ENTER)
以上就是Selenium鍵盤和鼠標的自動化操作了。