keyevent 封装_超详细!各大平台的 keyevent () 解析

前言

今天我们来聊一聊keyevent()接口,这个接口不仅能帮我们实现一些操作,比如删除输入框的内容、返回上一页等(下文会有详细的示例介绍)。并且合理地使用keyevent()接口,在一些情况下还会让我们脚本的兼容性更好。

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”)也可以达到目的,简单直接且兼容性又好:

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")

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值