前言

不论是模拟鼠标操作还是键盘操作,实际上我们都使用了pywinauto这个库里面的内容。

模拟鼠标操作,我们直接调用pywinauto.mouse这个模块里面的各个方法即可;而模拟键盘输入,我们则需要用到pywinauto.keyboard这个模块里面的SendKeys(keyname)方法。

模拟鼠标动作

模拟鼠标操作,首先需要获取当前连接的窗口,然后再调用相应模块里面的方法:

from airtest.core.api import *
auto_setup(__file__)
# 获取当前连接的窗口
dev = device()
# 拿到鼠标,并模拟鼠标的右键点击操作
dev.mouse.right_click(coords=(1920,100))

pywinauto.mouse这个模块里,还提供了很多常用的鼠标操作的方法:

# 鼠标点击操作,可以修改coords来指定点击位置
pywinauto.mouse.click(button='left', coords=(0, 0))
# 鼠标双击操作,可以修改coords来指定双击位置
pywinauto.mouse.double_click(button='left', coords=(0, 0))
# 移动鼠标,可以修改coords使鼠标移动到指定位置
pywinauto.mouse.move(coords=(0, 0))
# 鼠标右键点击,可以修改coords来指定右键点击位置
pywinauto.mouse.right_click(coords=(0, 0))
# 鼠标滚动操作,可以修改coords来指定滚动位置,修改wheel_dist来指定滚动距离
pywinauto.mouse.scroll(coords=(0, 0), wheel_dist=1)

更多模拟鼠标操作的方法,可以直接查看pywinauto.mouse模块的详细内容

模拟键盘输入

调用 Airtest 封装好的 keyevent 方法

比较特别的是,Airtest里面还有封装好的keyevent方法,来供我们发送键盘事件。从下面的源码可以看出,这个方法其实也是用的pywinauto库里面的内容。

只要连接了窗口设备,我们就可以直接使用Airtest封装好的keyevent方法来模拟键盘输入,可以省略获取当前窗口的操作:

from airtest.core.api import *
auto_setup(__file__)
# 模拟键盘输入^a和DELETE事件
keyevent("^a")
keyevent("{DELETE}")
调用 SendKeys 方法

与模拟鼠标操作类似,调用pywinauto.keyboard模块里面的SendKeys(keyname)方法,也需要先获取当前连接的窗口:

from airtest.core.api import *
auto_setup(__file__)
# 获取当前连接的窗口
dev = device()
# 拿到键盘,模拟输入^a,^a代表Ctrl+A,即全选
dev.keyboard.SendKeys("^a")
dev.keyboard.SendKeys("{DELETE}")

注意,这里的keyname需要用""括起来。更多keyname可以参考下图:


↙↙↙阅读原文可查看相关链接,并与作者交流