【更新公告】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-不優化
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

呀,這麼認真都看到這裏啦,幫忙點個推薦支持一下唄,灰常感謝~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章