模拟鼠标操作是模拟鼠标点击和键盘输入的操作,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)
标签:鼠标,button,character,PyUserInput,键盘,key,keyboard,100
From: https://www.cnblogs.com/tynam/p/17722992.html