【更新公告】pocoui更新至1.0.85版本

简介: 【更新公告】pocoui更新至1.0.85版本

1. 前言



本次更新为Poco框架更新,pocoui版本提升至1.0.85版本,同时更新了pocoservice.apk,更新详情如下。


2. 更新详情



1)pocoservice.apk更新


① 修复了1.0.84版本可能带来的新问题:假如使用 poco(xx).click()时,当前页面不止一个节点会被筛选出来,并且正好第一个节点可能是不可见节点的话,会导致点击位置超出屏幕的报错,类似下面这样的报错:


raise InvalidOperationException('Click position out of screen. pos={}'.format(repr(pos)))
poco.exceptions.InvalidOperationException: Click position out of screen. pos=[0.315632761, 1000.93921]
复制代码


② 部分APP的某些页面可能使用了WebView控件,以前的版本无法抓取,现在能够抓取(但并不能完全保证所有的WebView都可以拿到)。


③ UI树的层级结构多了一层,因此能够抓取到一些之前无法抓取的控件了 例如部分手机的一些底部虚拟按钮、某些输入法的按键界面(如讯飞输入法)等。


网络异常,图片无法展示
|


④ 修复了一个筛选出列表后、再进行进一步条件筛选时可能会引发的报错 例如,poco(xx)[0].parent().exists()执行正常,但是poco(xx)[1].parent().exists()就会报错。


⑤ 修复了部分手机可能拿到的节点信息未能实时刷新,导致运行失败的问题:

例如:某个列表从上往下滚动时,某个节点一开始不存在,但是后来滚动到了画面中心,此时拿到的节点信息可能依然是不存在,导致脚本报错(主要在部分机型上可能出现、以及如果手机在设置-显示-大小,设置为“大”的话,也可能导致此问题)。


此问题在1.0.84版本已经修复,但是带来了比较严重的性能问题,我们在这个版本做了优化,尽可能在刷新节点的同时保证了运行时的速度。


⑥ 去掉了当部分特殊节点无法被抓取到时的一个报错。


2)其它更新


① 由于Android poco不能与uiautomator同时运行,之前的版本会在启动前强制做一些杀进程的操作,现在改为只有启动失败时,才尝试杀进程,加快启动速度。


② hrpc提升至1.0.9版本,将一个在断开时可能出现的连接报错hrpc.exceptions.TransportDisconnected: HTTPConnectionPool(host='127.0.0.1', port=11385): Max retries exceeded with url: / 进行了简单处理。


3. 如何更新



1)使用了AirtestIDE


因为本次更新只涉及框架更新,所以我们即使使用最新的1.2.12版本IDE自带的Python环境也是无法享受到的;


但是我们可以在AirtestIDE设置使用本地Python环境,然后在本地Python环境中将 pocoui 更新至1.0.85版本,这样在IDE运行Poco脚本时,就会使用最新的Poco框架,并且在手机上安装上最新的 pocoservice.apk


2)使用本地Python环境/其它编辑器


使用本地Python环境同学,可以直接在对应的Python环境中,使用下述命令更新 pocoui


pip install -U pocoui
复制代码


使用其它编辑器,比如pycharm的同学,可以直接找到当前项目使用的Python解释器,然后升级 pocoui 至1.0.85版本:


网络异常,图片无法展示
|


4. 更新的注意事项



1)注意hrpc库是否更新至1.0.9版本


更新pocoui至1.0.85版本的同学,可以顺便注意下hrpc库是否也同步更新到了1.0.9版本,查看安装的库详情可以使用pip list命令:


网络异常,图片无法展示
|


网络异常,图片无法展示
|


2)如何确保手机上已经安装了最新的pocoservice.apk


使用最新的pocoservice.apk与旧版pocoservice.apk最大的差别是,拿到的树会多一层 Root 节点:


网络异常,图片无法展示
|


网络异常,图片无法展示
|


并且初次使用1.0.85版本跑Poco脚本时,会出现一条安装最新版本 pocoservice.apk 的log,类似:


C:\Users\AppData\Local\Programs\Python\Python37\lib\site-packages\airtest\core\android\static\adb\windows\adb.exe -P 5037 -s 7c5ce4c9 shell dumpsys package com.netease.open.pocoservice
installed version is None, installer version is 45. force_reinstall=False
复制代码


3)如需使用AirtestIDE,请使用最新版1.2.12


如我们需要在AirtestIDE中使用1.0.85的pocoui,请务必确保我们使用的是最新的1.2.12版本的IDE。


另外为确保成功安装最新的pocoservice.apk,我们可以把设备里已经安装的旧版pocoservice.apk,手工卸载掉,并且杀掉手机的所有后台进程和关闭AirtestIDE的poco模式。


此时我们在1.2.12版本的IDE(已设置使用本地Python环境并且环境里的pocoui已更新至1.0.85版本)运行类似这样的脚本:


# -*- encoding=utf8 -*-
__author__ = "AirtestProject"
from airtest.core.api import *
from airtest.report.report import simple_report,LogToHtml
auto_setup(__file__)
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
复制代码


就会自动帮我们在设备上安装最新版的pocoservice.apk了,此时打开辅助窗的Android模式,或者运行Poco脚本,都将使用最新的版本。


4)影响pocoservice.apk活跃的手机设置


尽管我们已经多次提出同学们需要关注自己手机设置对pocoservice.apk的后台活跃影响,但仍有部分同学会收到pocoservice.apk反复重启的困扰,这里我们仅仅列举了部分常见国产品牌手机的设置项,如果你的手机品牌不在这个列表中,请尽量按照下面提供的示例检查一下手机是否有类似设置:


  • 小米:启用手机管家-应用管理-权限-自启动管理-PocoService,允许PocoService自启动
  • 华为:手机管家(大于8.0版本)-应用启动管理-PocoService允许自启动和后台活动
  • OPPO:设置-电池-应用耗电管理-pocoservice-允许应用自启动,允许完全后台行为
  • VIVO:电池-后台高耗电-> PocoService 开启
  • Realme:设置-电池-应用耗电管理-pocoservice-允许应用自启动,允许完全后台行为
  • 一加:设置-电池-电池优化-PocoService-不优化
相关文章
Airtest的多图查找与两图对比
Airtest的多图查找与两图对比
320 0
|
Shell Android开发
Android10.0(Q) 默认应用设置(电话、短信、浏览器、主屏幕应用)
Android10.0(Q) 默认应用设置(电话、短信、浏览器、主屏幕应用)
1244 0
|
7月前
|
存储 容器 API
鸿蒙特效教程03-水波纹动画效果实现教程
本教程适合HarmonyOS初学者,通过简单到复杂的步骤,一步步实现漂亮的水波纹动画效果。
223 0
鸿蒙特效教程03-水波纹动画效果实现教程
|
12月前
|
IDE 搜索推荐 网络安全
Python编程:编写被动信息搜集之网址的IP及Whois查询
Python编程:编写被动信息搜集之网址的IP及Whois查询
188 0
|
机器学习/深度学习 分布式计算 监控
业界难题“模拟点击”,端上如何实时防守?
本文针对模拟点击的黑产实时防控问题,介绍过去2年蚂蚁集团在技术方面的工作,旨在介绍风险存在的原因、风险的特点、风险的技术分析以及风险的防控方法。
|
JavaScript 测试技术 Shell
03-MacOS上搭建Appium的iOS测试环境
03-MacOS上搭建Appium的iOS测试环境
|
SQL Oracle 关系型数据库
mysql递归查询方法|mysql递归查询遇到的坑,教你们解决办法
mysql递归查询方法|mysql递归查询遇到的坑,教你们解决办法
CentOS8的阿里云源停止维护后的更新配置方法 2022-2-17
CentOS8的生命周期停止,阿里云源repo也不再维护了,旧的yum/dnf更新报错失效,官方的配置方法也失效无人维护,只好自己经过一段时间研究终于解决了使dnf/yum可以正常更新使用的方法。