上期回顾:AirtestIDE基本功能(二)
以下基于
python3.7;airtest1.1.8;pocoui1.0.81;airtestIDE1.2.8
USB连接
用airtestIDE连接安卓真机之前,得先确保你用PC安装apk没问题。
1. 插上手机,使PC可以识别出手机,一般情况下插上会自动识别,不能识别的自己去手机官网安装驱动。
2. 打开“开发者选项”,每款手机各不一样,这个自己搜索一下。
3. 在“开发者选项”中打开‘开启开发者选项’、‘USB调试’、‘USB安装’、‘允许模拟位置’。如果是第一次开启USB调试,手机上会弹出确认界面,点确定
4. 退出各种手机助手,保证进程也要杀掉。
5. 如果本机安装了adb环境、模拟器、手机助手,全局搜索adb.exe,全部替换为airtestIDE文件夹下的。
现在可以在airtestIDE里连接了,默认插上手机后会自动刷新设备列表,如果没刷新就手动点一下‘刷新ADB’。
点击设备后的‘connect’按钮,就连接上真机了。如果你的手机连不上,或者一闪又退出了。可以尝试添加一下连接选项,选中上图中的‘Use Javacap’,不行就再选上‘Use ADB Orientation’。
现在airtestIDE1.2.8有个BUG,就是连接手机后,再断开,再连的时候连不上,可以尝试重启IDE
如果要断开连接,点击上面的工具按钮,点‘断开当前设备’
无线连接
不推荐,除非你的WIFI环境非常稳定。
-
手机USB线连接PC,PC执行命令
adb tcpip 5555
,5555是端口号,可以是其他数字 -
进入手机wifi设备,查看IP地址,比如这里是:192.168.1.1
-
拨掉USB线,在airtestIDE中选中‘远程设备连接’,输入
adb connect 192.168.1.1:5555
,点‘连接’
远程连接
同无线连接一样,如果手机是在云平台下(需要自己搭建),也可以用adb connect ip:port
去连接
常见问题
一、连接问题
如果无法连接,首先确保本机环境的adb可以连接。部分手机在连上USB线后需要选择‘MTP模式’进行连接。
若能够在 adb devices 指令的返回结果中看到自己的设备,但是无法使用AirtestIDE连接手机,可以继续检查以下几个方面:
-
在设备接入IDE进行初始化时,还会在手机上安装一个RotationWatcher.apk的应用(用于检测手机屏幕是否旋转),可能会在手机上有安装apk的弹窗提醒,需要手工点击同意安装
-
如果是已root的手机,可能会因为本地文件夹权限已被修改,导致Airtest没有权限将相关文件放入手机内,请检查手机内的 /data/local/tmp 文件夹是否有写入权限
-
如果手机曾经安装过 STF 库,可能会出现不能正常点击屏幕等问题,可以尝试清空原先安装的STF相关文件(执行指令
adb shell rm /data/local/tmp/mini*
)后,再重新将手机连接到IDE中进行初始化 -
部分手机虽然能成功安装 pocoservices.apk ,但是在启动中可能会不断提示重新安装、无法正确启动,此时需要检查手机所处的网络是否是特殊网络(例如开了代理)、手机的开发者选项中的设置是否开启(涉及到USB安装和操作相关的选项,部分型号设备需要选择取消权限监控等)。如果是VIVO/OPPO品牌手机,可能需要设置手机默认输入法为yosemite。
二、部分厂商设备特殊问题
小米
-
在系统设置的语言和输入法中,取消‘安全键盘’的选中状态
-
部分小米手机在连接失败时,报错
Failure [INSTALL_FAILED_USER_RESTRICTED: Install canceled by user]
,是因为在Airtest试图向手机中安装apk但是被手机自动拦截了。查看手机设置-》授权管理-》USB安装管理-》去掉USB安装应用的相关限制
三星
-
显示-屏幕分辨率调到最大:
部分手机设备(如部分型号三星手机)在连上AirtestIDE后,显示出的手机画面不能撑满整个屏幕,请在“设置”-“显示”中将“屏幕分辨率”调至 “WQHD” -
在开发者选项中,打开未知来源、取消权限监控。
华为
-
输入法设置中,取消安全输入
-
开发者选项->监控ADB安装应用取消,打开仅充电模式下允许调试
-
权限监控->设置->自动配置权限
-
部分华为型号的手机,可能出现点击位置与实际位置不符的情况(mate20pro, mate7等),需要在 设置-显示-屏幕分辨率 中,将分辨率设置为最高即可。
-
如果华为手机出现poco在启动后十几秒内自动断开的话,可以检查一下手机管家的版本号是否大于8.0,如果是的话,就在手机管家->启动管理里面,找到pocoservice,勾选允许自启动和允许后台活动
vivo
-
取消安全输入,如果遇到Poco初始化失败、text接口无法调用的问题,可以在输入法设置中将Yosemite输入法设置为默认
-
部分机型需要 在开发者选项中打开安全权限 ,否则可能在初始化poco的时候报错
-
如果vivo输密码的时候出现黑屏,可以在尝试把安全性设置里的 安全键盘 关闭掉再重试。如果没找到 安全键盘 的设置,可以找一下vivo的设置->安全与隐私-> 防止恶意截屏录屏 ,然后把防止恶意截屏录屏关掉就好了。
-
如果有 usb模拟点击 选项的话,一定要点开,否则运行脚本可能会报错:
OPPO
-
开发者选项的最底部,勾选 禁止监控权限
-
部分OPPO机型在初始化Poco时,或者调用 text() 接口时,会失败报错,原因可能是因为安装或者切换Yosemite输入法失败(需要输入OPPO账号密码才能切换)。此时可以先到系统设置-输入法设置里,将Yosemite输入法设置为默认输入法,如果尚未安装Yosemite输入法,可以在
AirtestIDEairtestcoreandroidstaticapks
目录下找到它并且手工安装到手机上之后,即可开始使用Poco功能以及 text() 接口。
魅族
魅族手机部分型号无法直接通过ADB进行连接,解决方案:
https://www.zhihu.com/question/26245688/answer/37621798
LG
-
LG手机需要选择充电模式才能正确打开USB调试,识别序列号:
-
在开发者选项中勾选允许模仿位置
一加
一加手机在使用poco的时候,会出现重复安装的问题,报错:
unable to launch AndroiduiautomationPoco
此时需要将pocoservice.apk的电池优化关掉,改成“不优化”
三、全面屏问题
IDE投屏位置发生偏移,自定义渲染分辨率
在一些不支持全面屏手机的app,画面不能充满整个屏幕的时候,出现黑边,poco定位发生偏移。
进入设置,勾选采用渲染分辨率,然后输入竖屏模式下的渲染分辨率,点击OK即可. 渲染分辨率为用逗号隔开的四个数字,数字分别代表竖屏模式下的 offset_x, offset_y, offset_width, offset_heigt
比如本例中在 1080*2220 分辨率下的大鱼来了,它在手机上会有两个黑边,上黑边高度为 100px ,画面高度为2020px ,下黑边高度为 100px ,所以它的渲染分辨率则为(0 ,100 ,1080 ,2020)
脚本运行发生偏移
当app不支持全面屏,出现黑边,运行poco点击的脚本的时候,会发生偏移,像下图执行poco("PauseButton").click()
一样,实际点击位置不符合预期。
确保当前poco或IDE为最新版本,关闭下图的 虚拟键盘,然后在脚本中调用poco.use_render_resolution()
, 让poco切换为当前画面渲染分辨率,运行脚本,即可准确点击。
对于Airtest无法支持的全面屏设备,可以自定义渲染分辨率::
poco.use_render_resolution(True, (0 ,100 ,1080 ,2020))
如果页面切换,从不支持全面屏的画面切换到支持全面屏的画面,即有黑边的页面->无黑边页面,需要重新设置poco分辨率,传入"False",poco.use_render_resolution(False)
,poco会切换成手机完整分辨率。
如当前为多机运行,同时存在普通屏手机和全面屏手机,而app不支持全面屏的时候,需要关闭所有手机的虚拟键盘,脚本按照支持全面屏的脚本编写。
四、其他常见问题
部分设备“返回”-“主页”-“菜单”等按钮失效
-
部分设备不能正确响应一些系统按钮操作,例如 HOME、BACK等:vivo Y55A、vivo Y67、vivo X20 Plus(屏幕指纹版)、红米 3X (Redmi 3X)、小米 5C (Xiaomi 5C)
-
部分机型由于系统定制原因,text输入文字时,会发生脚本异常退出问题:vivo Y55A
请在脚本内自行 catch 错误,或使用poco("xxx").set_text("input")
使用text()接口无法在密码框中输入密码或出现IDE窗口卡死
部分厂商(例如华为、VIVO等)的某些型号手机限制了密码框的输入。这部分手机设置内的安全选项默认是开启状态,所以强制在输入密码时必须使用 系统键盘输入 (即安全输入键盘)。这样会导致需要输入密码时,直接使用airtest的text()会无法输入内容,所以需要手动关闭安全输入选项后,才能正常输入密码内容:
另外有部分VIVO手机,在脚本点击到输入密码窗口的时候,IDE的可视化窗口可能会卡死,不会实时更新手机屏幕画面,导致脚本会报找不到图片的错误。
这时候可以关闭手机上防恶意截录屏选项和安全输入选项,就不会出现脚本点击到输入密码框时,IDE可视化窗口卡死的情况:
刷出重复设备
刷新时发现两台同样的设备,状态各为device和offline。
一般因为开启了手机助手,关掉后再次刷新即可。
手机能够连接,但是设备画面旋向不对
连接设备时勾选use ADB orientation
参数
手机能够连接,但是无法点击屏幕
如果手机能正常连接到AirtestIDE,但是使用鼠标操作屏幕无响应,提示 minitouch 初始化失败 ,请首先确认,手机设置中是否有 允许模拟点击位置 选项,并且处于激活状态(主要是MIUI手机有这个设置)
如果问题依旧,可以尝试先断开手机,在connect按钮的下拉菜单中勾选 Use ADB touch。
然后再点击connect按钮连接手机,此时应该可以使用鼠标操作屏幕了。
如果遇到报错:
Unable to open device /dev/input/event3 for inspectionopen: Permission denied
可以运行指令adb shell chmod 777 /dev/input/*
来赋予/dev/input
目录权限(该操作可能需要手机root权限,如何使用adb shell请自行查询网上资料)
---------------------------------------------------------------------------------
关注微信公众号即可在手机上查阅,并可接收更多测试分享~