天天看點

python按鍵盤上哪個鍵運作_python鍵盤操作PyKeyboard安裝使用詳解

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()