AirtestIDE连接安卓真机及常见问题

上期回顾: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环境非常稳定。

  1. 手机USB线连接PC,PC执行命令adb tcpip 5555,5555是端口号,可以是其他数字

  2. 进入手机wifi设备,查看IP地址,比如这里是:192.168.1.1

  3. 拨掉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”

  • 在开发者选项中,打开未知来源、取消权限监控。

华为

  1. 输入法设置中,取消安全输入

  2. 开发者选项->监控ADB安装应用取消,打开仅充电模式下允许调试

  3. 权限监控->设置->自动配置权限

  4. 部分华为型号的手机,可能出现点击位置与实际位置不符的情况(mate20pro, mate7等),需要在 设置-显示-屏幕分辨率 中,将分辨率设置为最高即可。

  5. 如果华为手机出现poco在启动后十几秒内自动断开的话,可以检查一下手机管家的版本号是否大于8.0,如果是的话,就在手机管家->启动管理里面,找到pocoservice,勾选允许自启动和允许后台活动

vivo

  1. 取消安全输入,如果遇到Poco初始化失败、text接口无法调用的问题,可以在输入法设置中将Yosemite输入法设置为默认

  2. 部分机型需要 在开发者选项中打开安全权限 ,否则可能在初始化poco的时候报错

  3. 如果vivo输密码的时候出现黑屏,可以在尝试把安全性设置里的 安全键盘 关闭掉再重试。如果没找到 安全键盘 的设置,可以找一下vivo的设置->安全与隐私-> 防止恶意截屏录屏 ,然后把防止恶意截屏录屏关掉就好了。

  4. 如果有 usb模拟点击 选项的话,一定要点开,否则运行脚本可能会报错:

OPPO

  1. 开发者选项的最底部,勾选 禁止监控权限

  2. 部分OPPO机型在初始化Poco时,或者调用 text() 接口时,会失败报错,原因可能是因为安装或者切换Yosemite输入法失败(需要输入OPPO账号密码才能切换)。此时可以先到系统设置-输入法设置里,将Yosemite输入法设置为默认输入法,如果尚未安装Yosemite输入法,可以在AirtestIDE\airtest\core\android\static\apks目录下找到它并且手工安装到手机上之后,即可开始使用Poco功能以及 text() 接口。

魅族

魅族手机部分型号无法直接通过ADB进行连接,解决方案:
https://www.zhihu.com/question/26245688/answer/37621798

LG

  1. LG手机需要选择充电模式才能正确打开USB调试,识别序列号:

  2. 在开发者选项中勾选允许模仿位置

一加

一加手机在使用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请自行查询网上资料)

 

---------------------------------------------------------------------------------

关注微信公众号即可在手机上查阅,并可接收更多测试分享~

posted @ 2021-04-28 22:51  ☆星空物语☆  阅读(2993)  评论(0编辑  收藏  举报