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