keyevent() 接口介绍
在Airtest中,keyevent()接口是在设备上执行keyevent按键事件,它包含 2 个参数:
keyname – 平台相关的按键名称
**kwargs – 平台相关的参数 kwargs
可以看出来这个接口传入的参数都是与平台相关的,它支持的平台有:Android, Windows和 iOS。
Android 平台下的 keyevent()
Android的按键码是基于ADB的,谷歌的 Android 按键码文档给我们详细介绍了keyevent()接口以及所有的按键码(进入公众号回复Android 按键码获取文档链接或者自行上网搜索关键词 Android keyevent)。
在使用Android设备的脚本中,当我们需要输入一些指定的按键,例如点一下HOME键、BACK键等,我们可以通过向keyevent()接口传入keycode参数的方式来实现,例如:
点一下HOME键–keyevent(“HOME”)
点一下BACK键–keyevent(“BACK”)
点一下MENU键–keyevent(“MENU”)
另外,这些keycode还可以用固定的数值来代表,如上面的例子我们也可以用下面的方式来表达:
点一下HOME键–keyevent(“3”)
点一下BACK键–keyevent(“4”)
点一下MENU键–keyevent(“82”)
小知识拓展,在android平台下,因为HOME键比较常用,所以airtest也封装了一个home()接口来按下HOME键:
home() # 相当于keyevent(“HOME”)
利用 keyevent() 接口实现删除输入框的内容
我们以大家经常碰到的情况 — 删除输入框的内容,来讲解keyevent()接口的实际应用。
用户在删除一个输入框内容时,会连续 N 次地去点击删除按钮,因此在airtest脚本中想要实现 “清空输入框” 内容的操作,需要写一个循环连续运行 N 次keyevent操作:
for i in range(10):
keyevent("KEYCODE_DEL")
删除键的固定数值为 “67”,所以示例代码中的keyevent(“KEYCODE_DEL”)也可以写成keyevent(“67”)。
这里有一个拓展小知识,如果已经接入了Poco,我们也可以考虑直接使用Poco的set_text接口,将输入框内容设置为空字符串即可: poco(“xxx”).set_text(“”) 。
利用 keyevent() 接口实现返回上一个页面
在很多情况下,BACK按钮也可以进行灵活使用。我们经常在点开一个页面,想返回上一个页面时,会选择按 UI 按钮,但其实一般情况下keyevent(“BACK”)也可以达到目的,简单直接且兼容性又好:
image
windows 平台下的 keyevent()
在Android中,我们可以通过keyevent(“HOME”)来实现按下HOME键的操作,而在Windows中,我们同样可以通过keyevent接口发送一些按键响应。Android的按键码是基于ADB的,而Airtest的Windows模块则封装使用了pywinauto支持的按键码,下图展示了有效的keycode:
关于 Windows 按键码的更多详情我们可以查阅pywinauto.keyboard文档的内容。(进入公众号回复Windows 按键码获取文档链接)。
在使用 Windows 的脚本中,如果我们想使用删除键,可以把代表删除键的keycode传入到keyevent()接口中:
注意Windows平台下的按键码需要加上括号{}
keyevent(“{DEL}”)
利用 keyevent() 接口实现全选
我们再举一个Windows平台下应用keyevent()接口的例子 — 全选:
在pywinauto中,符号^也代表了CTRL键,因此^a即为全选(Ctrl+A)
keyevent(“^a”)
IOS 平台下的 keyevent()
iOS 设备现在暂时 只支持 HOME 按键的keyevent。
keyevent(“HOME”)
https://testerhome.com/topics/21263