问题背景


在使用appium进行自动化测试时,手机突然崩溃重启,然而重启需要使用键盘解锁,在使用appium自动化测试时已经将输入法切换至appium自带的输入法且默认隐藏,那么应该怎么调出输入法解锁手机呢?

笔者appium的caps参数设置如下:

1
2
3
4
5
6
7
8
9
10
11
caps = {
"deviceName": "SM_G9600",
"automationName": "Appium",
"platformName": "Android",
"platformVersion": "9.0",
"appPackage": "com.meizu.flyme.flymebbs",
"appActivity": ".ui.LoadingActivity",
"noReset": True,
"unicodeKeyboard": True,
"resetKeyboard": True,
}

重点在于最后两个参数:”unicodeKeyboard”: True, “resetKeyboard”: True。

Adb命令


unicodeKeyboard表示会使用Unicode输入法,而resetKeyboard表示输入法隐藏,且在测试通过后重置输入法到原有状态,笔者在测试过程中手机崩溃重启,所以重启手机后锁屏界面无法看到输入法,从而无法解锁,经查阅资料,解决方法如下:

在安装Android Studio时,想必大家都使用过adb命令,adb命令可以在windows cmd环境下检测设备的连接情况,从而使用uiautomatorviewer进行元素定位(同web的F12):

1
adb devices -l

adbDevices.png
也可以查询手机已安装的输入法从而进行指定输入法切换(无需解锁手机):

1
adb shell ime list -a

adbInput.png

如图,adb shell ime list -a命令会显示当前手机安装的所有输入法

解决方法


此时,笔者选择切换至图示第一条输入法,百度输入法,windows cmd环境下键入命令即可:

1
adb shell ime set com.baidu.input/.ImeService

adbInputChange.png
出现如上图所示,点击手机解锁框,可惊奇地发现手机的输入法切换至指定输入法了,笔者在担心了几十分钟后终于成功将手机解锁。