模拟鼠标键盘操作PyUserInput

发布时间 2023-09-22 17:35:10作者: Tynam.Yang

模拟鼠标操作是模拟鼠标点击和键盘输入的操作,UI自动化测试中非常实用。在Web UI、App UI、WinApp UI自动化测试讲解中借助Selenium和Appium框架下ActionChains、TouchAction、MouseButton等类已经介绍了如何模拟鼠标和键盘操作。本文将为大家介绍一个独立的、任何时候都可以模拟鼠标和键盘操作的Python第三方库PyMouse和PyKeyboard。
PyMouse和PyKeyboard库都集成在PyUserInput库中,支持在Linux、Mac、Windows系统中使用,但是不同的操作系统使用时依赖库是不同的,Linux系统下依赖Xlib库、Mac系统下依赖Quartz和AppKit库、Windows系统下依赖pywin32和pyHook库。在安装上和Python其他第三方库安装相同,命令行工具中输入pip install PyUserInput库即可完成安装。

鼠标操作

鼠标操作种类繁多,例如左键单击、鼠标移动、鼠标拖拽、滚动、鼠标按下、鼠标释放等。PyMouse类下提供的方法如下:
 drag(x, y):鼠标拖拽到x,y坐标。
 move(x, y):鼠标移动到x,y坐标。
 position():返回鼠标当前x,y坐标。
 press(x, y, button=1):鼠标在x,y坐标处按下不松开,参数button表示按键。1代表左键、2代表中间键、3代表右键。
 release(x, y, button=1):鼠标在x,y坐标处松开,参数button表示按键。1代表左键、2代表中间键、3代表右键。
 scroll(vertical=None, horizontal=None, depth=None):鼠标滚动。支持垂直、水平和深度三个方向。
 click(x, y, button=1, n=1):鼠标在x,y坐标处点击。参数button表示按键,1代表左键、2代表中间键、3代表右键,参数n表示点击几次。
例如鼠标在坐标x=100,y=100处左键点击两次,代码如下:

# pymouse_demo.py
from pymouse import PyMouse

# 实例化鼠标对象
mouse = PyMouse()
# x=100, y=100 处左键点击两次
mouse.click(x=100, y=100, button=1, n=2)

键盘操作

键盘操作种类也有很多种,例如按下某键、释放某键、发送组合键等。PyKeyboard类下提供的方法如下:
 press_key(character):按下character键。
 release_key(character):释放character键。
 tap_key(character):轻击character键。
 tap_key(character,n,interval):连续轻击character键。参数n表示连续轻击次数,参数interval表示两次轻击之间的间隔时间。例如tap_key('l',n=2,interval=5)。
 type_string(char_string):发送字符串。
 PyKeyboard也提供了特殊键,部分特殊键如下:
 alt_key:Alt键。
 tab_key:Tab键。
 backspace_key:BackSpace键。
 return_key:Return键。
 enter_key:Enter键。
 shift_l_key:Shift+L键。
 alt_r_key:Alt+R键。
 control_r_key:Control+R键。
 cancel_key:Cancel键。
 function_keys[n]:function区域键,例如F5键就是function_keys[5]。
 numpad_keys['Home']:数字键盘键,例如Home键就是numpad_keys['Home'],数字键盘5键就是numpad_keys[5]。
例如发送字符串“Hello World!”和发送Alt+Tab组合键,代码如下:

# pykeyboard_demo.py
from pykeyboard import PyKeyboard

# 实例化键盘对象
keyboard = PyKeyboard()
# 发送 Hello World! 字符串
keyboard.type_string('Hello World!')
	
# 发送 Alt + Tab 组合键
keyboard.press_key(keyboard.alt_key)
keyboard.tap_key(keyboard.tab_key)
keyboard.release_key(keyboard.alt_key)