不论是模拟鼠标操作还是键盘操作,实际上我们都使用了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
方法,来供我们发送键盘事件。从下面的源码可以看出,这个方法其实也是用的pywinauto
库里面的内容。
只要连接了窗口设备,我们就可以直接使用Airtest
封装好的keyevent
方法来模拟键盘输入,可以省略获取当前窗口的操作:
from airtest.core.api import *
auto_setup(__file__)
# 模拟键盘输入^a和DELETE事件
keyevent("^a")
keyevent("{DELETE}")
与模拟鼠标操作类似,调用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
可以参考下图: