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

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

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


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}" 来帮助我们输入空格。

相关文章
|
数据中心
交换机的电口和光口到底是个啥东东,做网络的这个常识得懂
在网络通信中,交换机的电口和光口是关键组件。电口使用电信号和RJ45接口,适用于短距离传输,成本低,安装简单;光口使用光信号和光纤线缆,适用于长距离、高速传输,抗干扰能力强,但成本较高。本文详细介绍了电口和光口的工作原理、特点、应用场景及选择方法,帮助读者更好地理解和应用这两种接口。
1749 5
|
缓存 负载均衡 Java
OpenFeign第一个可扩展组件通信Client详解
这篇文章详细分析了OpenFeign框架中的第一个可扩展组件——通信Client,包括其默认实现`feign.Client.Default`,以及如何使用`LoadBalancerFeignClient`集成负载均衡能力,并探讨了如何替换默认的`HttpURLConnection`通信组件为`OkHttpClient`或`ApacheHttpClient`。
OpenFeign第一个可扩展组件通信Client详解
|
人工智能 自然语言处理
从迷茫到精通:揭秘模型微调如何助你轻松驾驭AI新热点,解锁预训练模型的无限潜能!
【10月更文挑战第13天】本文通过简单的问题解答形式,结合示例代码,详细介绍了模型微调的全流程。从选择预训练模型、准备新任务数据集、设置微调参数,到进行微调训练和评估调优,帮助读者全面理解模型微调的技术细节和应用场景。
356 6
|
弹性计算 对象存储 CDN
2023年阿里云流量计费标准价格表
2023年阿里云流量计费标准价格表,阿里云服务器公网带宽计费模式按固定带宽和按使用流量哪个划算?阿里云百科以北京地域为例,按固定带宽计费1M带宽一个月23元,按使用流量计费1GB流量0.8元,如果云服务器带宽使用率低于10%,那么首选按使用流量计费,如果带宽实际利用率较高的话,按固定带宽计费更划算一些
5464 0
2023年阿里云流量计费标准价格表
|
Java 测试技术 C#
几个好用的自动化测试工具总结
【6月更文挑战第4天】几个好用的自动化测试工具总结
974 0
|
缓存 架构师 算法
Java内存溢出如何解决,Java oom排查方法,解决办法
在Java开发过程中,有效的内存管理是保证应用程序稳定性和性能的关键。不正确的内存使用可能导致内存泄露甚至是致命的OutOfMemoryError(OOM)。
207 0
|
网络安全 数据中心 网络架构
【专栏】标准19英寸机架及其尺寸单位1U和2U在数据中心和通信机房中的应用
【4月更文挑战第28天】本文介绍了标准19英寸机架及其尺寸单位1U和2U在数据中心和通信机房中的应用。19英寸机架是国际标准,宽度48.26厘米,深度可定制。1U等于4.445厘米,2U是1U的两倍。1U设备适用于空间有限的情况,2U则提供更大空间和更好的散热。选择机架时需考虑空间、散热和电力需求,设备布局要保证散热和电缆管理。理解这些标准对于优化空间利用和系统管理至关重要。
1915 0
|
机器学习/深度学习 人工智能 安全
通向AGI 的那条路是AIGC么?
通过耳濡目染的影响,想必都已经知道通用人工智能(AGI)的概念,它是一种具有人类智能水平的人工智能形态,它具备广泛的认知能力,能够在各种任务和情境中进行学习和推理,引发了对于机器具备人类认知能力的幻想,能够像我们一样学习推理、解决复杂问题并独立做出决策。AGI被认为是人工智能领域的终极目标,但要实现AGI,我们需要找到一条有效的发展路径。随着ChatGPT和AIGC等技术的出现引发了对于人造智能的热潮,并提出了实现真正智能的可能性,但是即使在算力和数据充足的前提下,实现真正的AGI仍然面临着许多挑战。那么本文就来简单聊聊AIGC是否是通向AGI的道路,以及当前实现真正AGI可能遇到的卡点。
434 3
通向AGI 的那条路是AIGC么?
|
监控 关系型数据库 MySQL
C#程序发布时,一定要好好地保护,不然你会后悔的
C#程序发布时,一定要好好地保护,不然你会后悔的
277 0
下一篇
oss云网关配置