该方是基于uiautomator2如下版本进行验证的:
PS C:\windows\system32> pip show uiautomator2 Name: uiautomator2 Version: 1.2.2 Summary: Python Wrapper for Android UiAutomator2 test tool Home-page: https://github.com/codeskyblue/uiautomator2 Author: codeskyblue Author-email: codeskyblue@gmail.com License: MIT Location: c:\program files\python36\lib\site-packages Requires: six, progress, whichcraft, logzero, lxml, adbutils, retry, Pillow, requests, humanize Required-by: weditor, atx
下面贴出githup上关于该方法的使用
Watcher You can register watchers to perform some actions when a selector does not find a match. Register Watcher When a selector can not find a match, uiautomator2 will run all registered watchers. Click target when conditions match d.watcher("AUTO_FC_WHEN_ANR").when(text="ANR").when(text="Wait") .click(text="Force Close") # d.watcher(name) ## creates a new named watcher. # .when(condition) ## the UiSelector condition of the watcher. # .click(target) ## perform click action on the target UiSelector. There is also a trick about click. You can use click without arguments. d.watcher("ALERT").when(text="OK").click() # Same as d.watcher("ALERT").when(text="OK").click(text="OK") Press key when a condition becomes true d.watcher("AUTO_FC_WHEN_ANR").when(text="ANR").when(text="Wait") .press("back", "home") # d.watcher(name) ## creates a new named watcher. # .when(condition) ## the UiSelector condition of the watcher. # .press(<keyname>, ..., <keyname>.() ## press keys one by one in sequence. Check if the named watcher triggered A watcher is triggered, which means the watcher was run and all its conditions matched. d.watcher("watcher_name").triggered # true in case of the specified watcher triggered, else false Remove a named watcher # remove the watcher d.watcher("watcher_name").remove() List all watchers d.watchers # a list of all registered watchers Check for any triggered watcher d.watchers.triggered # true in case of any watcher triggered Reset all triggered watchers # reset all triggered watchers, after that, d.watchers.triggered will be false. d.watchers.reset() Remove watchers # remove all registered watchers d.watchers.remove() # remove the named watcher, same as d.watcher("watcher_name").remove() d.watchers.remove("watcher_name") Force to run all watchers # force to run all registered watchers d.watchers.run()
注:里面涉及的watcher_name可以自定义,可以做到见名知意即可
watcher的使用是要先注册(第9行至20行均是注册watcher的方法),然后激活watcher(第56行),注意这个激活方法只是一个瞬时激活,就是说使用之后即销毁,不会一直存于后台。那这样的话在实际的使用场景中怎么使用这个功能呢,下面看一段脚本 1 # -*- coding:utf-8 -*-
import uiautomator2 as u2 import time d = u2.connect() cfg = MTBFConfig() package = cfg.getstr("Admit", "pkg", "config") PACKAGELIST = package.split(",") print(PACKAGELIST) d.watcher("").when(text="").click(text="") #d.watchers.run() print(d.watchers) time.sleep(2) pkglen = len(PACKAGELIST) print(("There are %d package for test") %pkglen) class Admit(object): def main(self): for i in range(pkglen): k = 0 for j in range(5): if d.info['currentPackageName'] != PACKAGELIST[i]: d.app_start(PACKAGELIST[i]) print(PACKAGELIST[i]) time.sleep(1) k += 1 if k == 3: print("Can not enter "+ str(PACKAGELIST[i])) return False if PACKAGELIST[i] == 'com.google.android.contacts': print("hello") if d(description = "Open navigation drawer").exists(timeout = 5): d(description = "Open navigation drawer").click() if d(text = "Settings").exists(timeout = 5): d(text = "Settings").click() if d(resourceId="android:id/title", text = "Import").exists(timeout=5): d(resourceId="android:id/title", text = "Import").click() time.sleep(3) if d(resourceId = "android:id/button1", text = "OK").exists(timeout = 5): d(resourceId = "android:id/button1", text = "OK").click() time.sleep(1) d.watchers.run() //在上面OK点击之后会弹出一个权限访问的许可,所以这个时候需要激活一次watcher把弹框关掉,以便不影响后续测试,所以就一个原则,哪里可能会有弹框就在哪里激活watcher if __name__=="__main__": ad = Admit() ad.main()
总结
以上所述是小编给大家介绍的python uiautomator2 watcher的使用方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“详解python uiautomator2 watcher的使用方法”评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
2025年01月09日
2025年01月09日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]