软件测试

如何用Airtest脚本实现切换手机的输入法

2022-06-08  本文已影响0人  萌萌聊测试

1. 前言

前几期的推文中,我们讲了Airtest输入文本相关的一些问题,其中就有提到Airtest的专用输入法Yosemite。很多同学对这个输入法又爱又恨,爱的是这个输入法可以很轻松帮我们实现中文输入,恨的是这个输入法没有软键盘,想手动输入的时候,还要去设置里面切换成系统输入法。

那其实,有没有办法 直接在代码里面就实现手机输入法的切换呢 ?比如我们要使用Airtest的 text接口之前,就启动Yosemite输入法,当使用完 text 之后,我们就再切换成系统输入法。

今天我们就一起来看看怎么实现这个需求吧!

2. 解决问题的思路

1)搜ADB指令

ADB是一种功能多样的命令行工具,可让我们与设备进行通信。ADB 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。

因此,我们可以借助强大的搜索引擎(建议使用谷歌),来看下是否有对应的ADB指令帮助我们实现切换输入法的操作:

如果对python自动化测试、web自动化、接口自动化、移动端自动化、面试经验交流等等感兴趣的测试人,可以点我获取...

找到之后,我们可以先用ADB指令跑通我们切换输入法的需求。

2)搜Airtest的API文档

当使用指令跑通操作之后,我们可以再搜一下Airtest的API文档,看看有没有接口,可以让我们方便地调用这些指令的:

看起来这个 shell 就很合适,大概明确实现思路之后,接下来我们就动手实操下吧!

3. adb指令切换输入法

1)查看手机内所有的输入法

adb shell ime list -a 可以帮助我们列出手机里面的所有输入法,但是内容很长:

我们可以在命令行里筛一下 adb shell ime list -a|findstr mId= ,比如这样,看起来就会清晰简洁很多:

2)切换输入法

ADB指定切换某个输入法,需要 先启动,再设置 :

adbshellime enable 输入法ID

adbshellime set 输入法ID

以切换成Yosemite输入法为例:

adb shell ime enable com.netease.nie.yosemite/.ime.ImeService

adb shell ime set com.netease.nie.yosemite/.ime.ImeService

3)查看当前使用的输入法

设置完成之后,我们还可以使用指令来检查下当前的输入法是否已经设置成我们想要的输入法:

adb shell settings getsecure default_input_method

如果对python自动化测试、web自动化、接口自动化、移动端自动化、面试经验交流等等感兴趣的测试人,可以点我获取...

4. 将指令切换输入法转换成python脚本

跑通了指令切换输入法的流程之后,我们就可以想办法将其转换成Airtest脚本了。Airtest封装有 shell 接口,可以给我们用于执行ADB指令:

# -*- encoding=utf8 -*-

__author__ ="AirtestProject"

from airtest.core.api import*

auto_setup(__file__)

ym ="com.netease.nie.yosemite/.ime.ImeService"

sh ="com.sohu.inputmethod.sogouoem/.SogouIME"

def set_ime(ime):

shell("ime enable "+ ime)

shell("ime set "+ ime)

set_ime(ym)

text("123", enter=False)

set_ime(sh)

现在来看,是不是超级简单呢!

1)关于获取输入法的ID

其实不需要通过ADB指令,我们也可以通过Airtest封装的方法来获取手机内所有输入法的列表:

# -*- encoding=utf8 -*-

__author__ ="AirtestProject"

from airtest.core.api import *

auto_setup(__file__)

dev = device()

print(dev.yosemite_ime._get_ime_list())

5. 小结

本次推文我们主要了解了2方面的内容,一个是使用ADB指令切换输入法,包含:

查看所有输入法的指令:adb shell ime list -a

启动指定输入法的指令:adb shell ime enable 输入法ID

设置指定输入法的指令:adb shell ime set 输入法ID

查看当前输入法的指令:adb shell settings get secure default_input_method

另一个是将切换输入法的需求转换成Airtest脚本,包含:

用于执行ADB指令的 shell 接口:shell("ime set 输入法ID")

获取输入法列表的接口:device().yosemite_ime._get_ime_list()

最后:如果对python自动化测试、web自动化、接口自动化、移动端自动化、面试经验交流等等感兴趣的测试人,点我点我点我自行获取 ~

上一篇 下一篇

猜你喜欢

热点阅读