selenium的鍵盤操作與滑鼠操作
在 WebDriver 中, 將這些關於滑鼠操作的方法封裝在 ActionChains 類提供。
ActionChains 類提供了滑鼠操作的常用方法:
-
perform(): 執行所有 ActionChains 中儲存的行為;
-
context_click(): 右擊;
-
double_click(): 雙擊;
-
drag_and_drop(): 拖動;
-
move_to_element(): 滑鼠懸停。
滑鼠懸停操作
from selenium import webdriver # 引入 ActionChains 類 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.webdriver import ActionChains
匯入提供滑鼠操作的 ActionChains 類。
- ActionChains(driver)
呼叫 ActionChains()類, 將瀏覽器驅動 driver 作為引數傳入。
- move_to_element(above)
context_click()方法用於模擬滑鼠右鍵操作, 在呼叫時需要指定元素定位。
- perform()
執行所有 ActionChains 中儲存的行為, 可以理解成是對整個操作的提交動作。
Keys()類提供了鍵盤上幾乎所有按鍵的方法。 前面瞭解到, send_keys()方法可以用來模擬鍵盤輸入, 除此 之外, 我們還可以用它來輸入鍵盤上的按鍵, 甚至是組合鍵, 如 Ctrl+A、 Ctrl+C 等。
from selenium import webdriver # 引入 Keys 模組 from selenium.webdriver.common.keys import Keys driver = webdriver.Chrome() driver.get("http://www.baidu.com") # 輸入框輸入內容 driver.find_element_by_id("kw").send_keys("seleniumm") # 刪除多輸入的一個 m driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE) # 輸入空格鍵+“教程” driver.find_element_by_id("kw").send_keys(Keys.SPACE) driver.find_element_by_id("kw").send_keys("教程") # ctrl+a 全選輸入框內容 driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'a') # ctrl+x 剪下輸入框內容 driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'x') # ctrl+v 貼上內容到輸入框 driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'v') # 通過回車鍵來代替單擊操作 driver.find_element_by_id("su").send_keys(Keys.ENTER) driver.quit()
需要說明的是, 上面的指令碼沒有什麼實際意義, 僅向我們展示模擬鍵盤各種按鍵與組合鍵的用法。
- from selenium.webdriver.common.keys import Keys
在使用鍵盤按鍵方法前需要先匯入 keys 類。
以下為常用的鍵盤操作:
-
send_keys(Keys.BACK_SPACE) 刪除鍵(BackSpace)
-
send_keys(Keys.SPACE) 空格鍵(Space)
-
send_keys(Keys.TAB) 製表鍵(Tab)
-
send_keys(Keys.ESCAPE) 回退鍵(Esc)
-
send_keys(Keys.ENTER) 回車鍵(Enter)
-
send_keys(Keys.CONTROL,‘a’) 全選(Ctrl+A)
-
send_keys(Keys.CONTROL,‘c’) 複製(Ctrl+C)
-
send_keys(Keys.CONTROL,‘x’) 剪下(Ctrl+X)
-
send_keys(Keys.CONTROL,‘v’) 貼上(Ctrl+V)
-
send_keys(Keys.F1) 鍵盤 F1
-
……
-
send_keys(Keys.F12) 鍵盤 F12