如何在各大平台下“模拟输入空格”

简介: 如何在各大平台下“模拟输入空格”

网络异常,图片无法展示
|


1. 前言



Airtest和Poco自动化框架分别提供了 text 接口和 set_text 接口帮助我们 实现文本输入的操作


但部分特殊字符,比如同学们经常问到的空格,使用这两个接口并不一定完全能满足我们的期望,所以下文我们将详细介绍这两个关于文本输入的接口,并介绍我们该如何 在各大平台下模拟输入空格


2. 输入文本的接口介绍



1)Airtest的text接口


Airtest API文档中查看我们的 text 接口,可以获取以下信息:


网络异常,图片无法展示
|


text 接口是一个跨平台的接口,支持Android、Windows和iOS平台。


① 输入前激活文本输入框


在文本框使用 text 进行输入操作之前,我们必须激活文本框,也就是我们通常在输入操作之前,会点击一下文本框,使输入光标激活在文本框内:


# 点击激活文本框,也可以是touch操作
poco("SearchField").click()
# 输入文本
text("网易 云音乐",enter=False)
复制代码


② 输入后的回车操作


text 接口默认情况下,会在输入完毕后执行一次回车(ENTER)操作。在Android平台下,回车的表现可能是搜索操作;在iOS平台下,回车的表现可能是换行操作......


如果同学们不需要在输入完毕后执行回车动作,可以设置 enter=False :


text("message",enter=False)
复制代码


③ 输入后的搜索操作


部分Android的搜索输入框,在执行文本输入之后,需要点击键盘的搜索按钮才能触发搜索的动作,所以在Android平台下,我们的 text 接口新增了1个参数 search ,用于支持这种情况:


text("test", search=True)
复制代码
2)Poco的set_text接口


Poco API文档中查看 set_text 接口,我们可以知道它可以用来设置控件的文本属性。


网络异常,图片无法展示
|


比如我们使用 set_text 接口,给某个文本输入框设置了文本属性,则达到了输入文本的目的。使用这个输入文本还有一个好处,就是我们使用 poco("文本框").set_text(" ") 就能快速清空文本框的内容。


3)关于选择text还是set_text进行输入


我们只需要记住一点:文本框支持哪个输入,我们就选择哪个接口。因为平台和文本框的多样化,我们很难保证 text 接口能完全支持所有的输入框,同理,set_text 也是如此。


当我们在某个文本框,使用 text 接口无法输入时,我们可以看看能否使用Poco的 set_text 接口,可以的话,我们就尝试更换成 set_text 来执行文本输入操作。


但有一点,如果文本框支持Poco的 set_text ,并且我们需要执行清空文本框的内容,这时我们使用 set_text 的置空,将非常方便快捷:


poco("文本框").set_text(" ")
复制代码


3. 在Android平台下输入空格



Airtest和Poco框架都支持Android原生应用,所以我们支持使用 text 或者 set_text 接口来输入文本和空格:


# text输入
text("薛之谦 天外来物")
sleep(1.0)
# 删除
for i in range(10):
    keyevent("67")
# set_text输入    
poco("com.netease.cloudmusic:id/search_src_text").set_text("薛之谦 天外来物")
sleep(1.0)
# set_text置空
poco("com.netease.cloudmusic:id/search_src_text").set_text(" ")
复制代码


网络异常,图片无法展示
|


4. 在iOS平台下输入空格



理论上,Airtest和Poco都支持iOS原生应用,我们可以使用 text 接口和 set_text 接口来进行输入操作;但是因为大部分iOS的输入框都不支持直接设置text属性,所以在iOS平台下,我们还是常用Airtest的 text 接口来输入文本和空格:


# text输入
text("网易 云音乐",enter=False)
sleep(1.0)
# 删除
for i in range(10):
    text("\b",enter=False)
复制代码


网络异常,图片无法展示
|


5. 在Windows平台下输入空格



在上文中我们已经知道,text 是跨平台的API,支持Windows平台;但Poco暂时还不支持Windows窗口(除了已经接入Poco-SDK的游戏窗口)。


所以我们优先选择使用Airtest的 text 接口在Windows平台下输入空格,尝试如下:


# 中文输入
text("薛之谦 天外来物")
for i in range(10):
    keyevent("{BACK}")
# 纯英文输入
text("Love Story")
复制代码


网络异常,图片无法展示
|


发现这样并不会按照预期输入我们想要的空格,所以我们需要尝试别的方法,比如利用Windows平台下的 keyevent 键码:


# 中文输入
text("薛之谦",enter=False)
keyevent("{VK_SPACE}")
text("天外来物")
sleep(1.0)
for i in range(10):
    keyevent("{BACK}")
# 纯英文输入
text("Love{VK_SPACE}Story")
复制代码


网络异常,图片无法展示
|


可以看到效果符合我们的预期,更多Windows平台下的keyevent键码,我们可以参考 pywinauto.keyboard 模块的内容:pywinauto.readthedocs.io/en/latest/c…


6. 小结



简单回顾下,在Android和iOS平台下,我们给 text 或者 set_text 接口传入的字符串带空格,接口会按照预期帮我们输入这个空格;但在Windows平台下,我们就需要借助keyevent键码 "{VK_SPACE}" 来帮助我们输入空格。

相关文章
|
18天前
|
存储 缓存 监控
《深度拆解3D开放世界游戏中角色攀爬系统与地形碰撞网格动态适配的穿透卡顿复合故障》
本文聚焦3D开放世界游戏《山岭秘径》开发中,角色攀爬系统与地形碰撞网格动态适配的穿透卡顿复合故障。该故障在超大地形远距离(2000米以上)、动态碰撞地形(如晃动藤蔓)高频攀爬时触发,表现为碰撞穿透、动画卡顿,严重时致碰撞网格永久错位。文章介绍技术环境后,还原故障发现与初期排查,排除加载延迟、IK精度问题;再通过空间特征、网格更新规律、资源占用分析,拆解出坐标精度损失、网格更新延迟、CPU线程竞争的复合诱因;最后提出坐标重构、网格管理优化等方案。
78 12
|
1月前
|
缓存 前端开发 NoSQL
如何开发工程项目部管理系统中的进度管理板块(附架构图+流程图+代码参考)
本文介绍如何构建一个高效的工程项目进度管理板块,涵盖系统架构、数据模型、核心功能、业务流程及开发技巧。内容包含四个关键代码示例,便于快速落地开发,帮助解决进度不准与沟通不畅两大工程难题。
|
11月前
|
数据中心
交换机的电口和光口到底是个啥东东,做网络的这个常识得懂
在网络通信中,交换机的电口和光口是关键组件。电口使用电信号和RJ45接口,适用于短距离传输,成本低,安装简单;光口使用光信号和光纤线缆,适用于长距离、高速传输,抗干扰能力强,但成本较高。本文详细介绍了电口和光口的工作原理、特点、应用场景及选择方法,帮助读者更好地理解和应用这两种接口。
1339 5
|
缓存 负载均衡 Java
OpenFeign第一个可扩展组件通信Client详解
这篇文章详细分析了OpenFeign框架中的第一个可扩展组件——通信Client,包括其默认实现`feign.Client.Default`,以及如何使用`LoadBalancerFeignClient`集成负载均衡能力,并探讨了如何替换默认的`HttpURLConnection`通信组件为`OkHttpClient`或`ApacheHttpClient`。
OpenFeign第一个可扩展组件通信Client详解
|
10月前
|
敏捷开发 数据可视化 项目管理
燃起图是什么? 敏捷项目管理中不可忽视的高效利器
在现代项目管理中,团队效率至关重要。燃起图(Burn Up Chart)作为一种直观的可视化工具,通过展示完成工作量和总工作量的变化,帮助团队实时跟踪进度、应对需求变更,提高透明度与沟通效率。本文介绍了燃起图的功能、优势及应用方法,并推荐了几款支持燃起图的项目管理工具。
370 13
|
传感器 编解码 Linux
V4l2 专栏
V4l2 专栏
287 1
|
弹性计算 对象存储 CDN
2023年阿里云流量计费标准价格表
2023年阿里云流量计费标准价格表,阿里云服务器公网带宽计费模式按固定带宽和按使用流量哪个划算?阿里云百科以北京地域为例,按固定带宽计费1M带宽一个月23元,按使用流量计费1GB流量0.8元,如果云服务器带宽使用率低于10%,那么首选按使用流量计费,如果带宽实际利用率较高的话,按固定带宽计费更划算一些
5158 0
2023年阿里云流量计费标准价格表
|
Java 测试技术 C#
几个好用的自动化测试工具总结
【6月更文挑战第4天】几个好用的自动化测试工具总结
892 0
|
缓存 架构师 算法
Java内存溢出如何解决,Java oom排查方法,解决办法
在Java开发过程中,有效的内存管理是保证应用程序稳定性和性能的关键。不正确的内存使用可能导致内存泄露甚至是致命的OutOfMemoryError(OOM)。
179 0