该方是基于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的使用方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
2024年11月19日
2024年11月19日
- 好薇2024《兵哥哥》1:124K黄金母盘[WAV+CUE]
- 胡歌.2006-珍惜(EP)【步升大风】【FLAC分轨】
- 洪荣宏.2014-拼乎自己看【华特】【WAV+CUE】
- 伊能静.1999-从脆弱到勇敢1987-1996精选2CD【华纳】【WAV+CUE】
- 刘亮鹭《汽车DJ玩主》[WAV+CUE][1.1G]
- 张杰《最接近天堂的地方》天娱传媒[WAV+CUE][1.1G]
- 群星《2022年度发烧天碟》无损黑胶碟 2CD[WAV+CUE][1.4G]
- 罗文1983-罗文甄妮-射雕英雄传(纯银AMCD)[WAV+CUE]
- 群星《亚洲故事香港纯弦》雨果UPMAGCD2024[低速原抓WAV+CUE]
- 群星《经典咏流传》限量1:1母盘直刻[低速原抓WAV+CUE]
- 庾澄庆1993《老实情歌》福茂唱片[WAV+CUE][1G]
- 许巍《在别处》美卡首版[WAV+CUE][1G]
- 林子祥《单手拍掌》华纳香港版[WAV+CUE][1G]
- 郑秀文.1997-我们的主题曲【华纳】【WAV+CUE】
- 群星.2001-生命因爱动听电影原创音乐AVCD【MEDIA】【WAV+CUE】