selenium提供鍵盤操作Keys類,但是其局限性太大。真正要玩轉鍵盤操作還是需要PyKeyboard這個庫,PyKeyboard鍵盤庫和PyMouse一樣內建到了PyUserInput裡面,是以安裝PyUserInput即可。具體的方法可以參考上一篇文章!
提前說一下,PyKeyboard把一些特殊的按鍵ctrl、alt、enter等定義成了類屬性,但是要注意Mac和Windows中,alt鍵的輸入方法不一樣。
我們可以通過dir函數來檢視各種按鍵屬性,在這裡面可以找到你想要的按鍵。
# -*- coding: utf-8 -*-
from pykeyboard import PyKeyboard
k = PyKeyboard()
print(dir(k)) # 結果太多,就不列印了
常用函數介紹:
press_key() # 按下鍵
release_key() # 松開鍵
press_keys() # 按下多個鍵,參數為清單
以上函數的參數為要按下的鍵,可以用字元形式輸入,也可以用類屬性,記得press_key()後一定要release,否則就是長按不放了。不過,press_keys()的源碼裡面自帶了release,應該不用再釋放,這一點我沒測試
tap_key(character='', n=1, interval=0): # 點選鍵
tap_key第一個參數為要點選的鍵,可以用字元的形式輸入,也可以用類屬性,第二個參數為點選的次數,預設為1;第三個參數為點選間隔的時間,機關為秒,預設為0
按鍵示例:
k.press_key('i') # 模拟鍵盤按i鍵
k.press_key(k.alt_key) # 按住alt鍵
k.press_key(k.control_key) # 按住ctrl鍵
k.press_key(k.enter_key) # 按住enter鍵
k.tap_key(k.tab_key) # 點選tab鍵
k.tap_key(k.delete_key) # 點選delete鍵
k.release_key(k.alt_key) # 松開alt鍵
k.tap_key(k.function_keys[5]) # 點選功能鍵F5
k.tap_key(k.numpad_keys[5],2) # 點選小鍵盤5共2次
系統差異:
# 同為按下alt鍵
# Windows
k.tap_key(k.alt_key)
# Mac
k.tap_key('Alternate')
我們通過一個案例來感受下PyKeyboard的用法:
1 打開百度
2 按下ctrl+shift+i鍵 打開審查元素視窗
3 松開按鍵
# -*- coding: utf-8 -*-
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options
from pykeyboard import PyKeyboard
def test():
driver.get('https://www.baidu.com/')
# 等待網頁加載
input = WebDriverWait(driver, 30).until(
EC.visibility_of_element_located((By.ID, "kw"))
)
k = PyKeyboard()
# 按下ctrl+shift + i
k.press_key(k.control_key)
k.press_key(k.shift_key)
k.tap_key('i')
# 松開鍵
k.release_key(k.shift_key)
k.release_key(k.control_key)
time.sleep(10)
if __name__ == "__main__":
option = Options()
option.binary_location = "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe" # 安裝的位置
driver = webdriver.Chrome(options=option)
test()
driver.quit()