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-不優化
5)對pocoui新版快速提單
如同學們在使用新版的pocoui
時遇到了一些問題無法解決,可以通過此網站向我們的開發者快速提單:https://airtest.netease.com/issue_create 。
可以在標題中加入“pocoui1.0.85”之類的字眼,方便我們快速篩選和排查。
Airtest官網:https://airtest.netease.com/
Airtest教程官網:https://airtest.doc.io.netease.com/
搭建企業私有云服務:https://airlab.163.com/b2b
官方答疑 Q 羣:654700783
呀,這麼認真都看到這裏啦,幫忙點個推薦支持一下唄,灰常感謝~