1. 程式人生 > >selenium的鍵盤操作與滑鼠操作

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