通过Appium执行测试会在设备上安装unlock.app、setting.app、io.appium.android.ime三个应用,第一次使用Appium在新的Android设备上执行是不会有任何问题的,但是如果第二次运行代码,就会抛出异常。原因也很简单,就是因为unlock.app、setting.app、io.appium.android.ime在Appium中并没有去做智能判断设备上是否已经安装过,所以每次执行前都需要卸载这三个应用再执行代码才不会报错,当然也可以修改Appium的代码避免重复安装(unlock.app、setting.app在appium1.7版本已经修复如设备安装过则不会重复安装,而ime依然需要自己解决)。那么为什么Appium一定要安装这三个应用呢?到底有什么作用?下面一探究竟
1.Unlock
Unlock的作用是在手机锁屏的情况下,appium依然可以操作手机,如果这个unlock.apk没有安装,而手机是锁屏情况下会报错
项目地址:https://github.com/appium/unlock_apk
2.Setting
用于处理系统设置,然后应用程序关闭。一旦设备上安装,可以设置的wifi
,data
,animation
并locale(设置语言、国家),还可以得到当前位置,生成IME码等等。
项目地址:https://github.com/appium/io.appium.settings
3.Unicode IME
appium 自定义输入法,主要功能隐藏输入法界面及可输入中文。
项目地址:https://github.com/appium/io.appium.android.ime
4.解决重复安装的问题
在Appium安装目录下\node_modules\appium\lib\devices\android的文件夹里,有一个Android.js文件。(Appium-desktop的修改与Appium不通过,Appium-desktop可以参考https://blog.youkuaiyun.com/hszxd479946/article/details/78900982)
如下图注释4行代码,重启Appium服务即可
注意:这里需要注意一点的就是,第一次在设备上运行时,在不注释的情况下让Appium先在设备上安装这三个应用,然后修改注释并重启Appium服务继续测试。保证这三个应用在手机上存在。
6.一个Unicode IME的报错
A new session could not be created. (Original error: Command failed: C:\Windows\system32\cmd.exe /s /c "E:\Rocheng\ADT-bundle\sdk\platform-tools\adb.exe -s 5b30ee87 install "E:\Tool\Appium\node_modules\appium\build\unicode_ime_apk\UnicodeIME-debug.apk""
adb: failed to install E:\Tool\Appium\node_modules\appium\build\unicode_ime_apk\UnicodeIME-debug.apk: Failure [INSTALL_FAILED_ALREADY_EXISTS: Attempt to re-install io.appium.android.ime without first uninstalling.]
) (WARNING: The server did not provide any stacktrace information)
这个报错的原因是手动卸载造成的,如果不根据上面的注释修改,而是自己手动卸载设备中的应用,这时候很容易把Unicode IME忘记。可通过命令行在设备上卸载,三个应用的package名称是io.appium.settings、io.appium.unlock、io.appium.android.ime,通过adb命令卸载如下: