zoukankan      html  css  js  c++  java
  • [Python2]介绍关于Uiautomator的watcher使用场景及使用方法

    【官方的介绍】:

    Watcher

    You can register watcher to perform some actions when a selector can not find a match.

    如何理解这句话呢,意思就是当你在执行一些操作时,有些选择器未匹配上就会触发这个监视器

    举个例子:首次启动安装的第三方app,都会让要同意一些权限(比如电话权限、存储权限、位置权限等),同意之后才可以进行后面正常的操作。那么这个步骤简单划分为三个步骤:

    步骤1:启动app

    步骤2:进行权限授权

    步骤3:使用app功能

    watcher:d.watcher('Permission').when(text = 'ALLOW').click(text = 'ALLOW')

    在这个过程中,我们可以把步骤2里面权限授权过程全部做成一个watcher

    【如何才能使用watcher】

    当你的程序跳过了某些步骤而去执行另外的操作,但这个“某些步骤”又在程序正常或者异常情况下确实会发生,那么这个时候就会导致有些 selector 找不到就触发选择器,看看选择器中是否有匹配的,如果有匹配的就会按照watcher中定义的操作进行执行

    拿上面例子来说,程序中直接执行步骤1和步骤3,但步骤2又确实是存在,这时就会触发watcher,只有watcher执行了才会去执行步骤3

    下面以实例进行讲解:

     1 # -*- coding: utf-8 -*-
     2 import os
     3 import sys
     4 import subprocess 
     5 import time
     6 from uiautomator import device as d
     7 #定义一个授权权限的监视器,只要发现弹框中有selector的text=allow的就执行
     8 d.watcher('Permission').when(text = 'ALLOW').click(text = 'ALLOW')
     9 #在应用列表中找到radio这个应用
    10 d(text = "Radio").scroll.to(text = "Radio")
    11 #启动radio应用
    12 d(text = "Radio").click()
    13 #等待2秒后点击开始扫描频道
    14 time.sleep(2)
    15 d.click(456,1146)
    16 i = 0
    17 if d(description = "More options").exists:
    18     print "find more options"
    19     d(description = "More options").click()
    20 else:
    21     while not d(description = "More options").exists:
    22         print 'not find more options'
    23         time.sleep(1)
    24 #         d.click(456,1146)
    25         i = i +1
    26         print "this is %d time to find the scan button" %i
    27 
    28 if d.watcher('Permission').triggered:
    29     print "watcher is triggered"
    30 else:
    31     print "watcher is not triggered"

    输出:

     1 watcher is triggered 

    说明:在上面第12行至15行间,就会触发watcher

    watcher的语法介绍:

    1 d.watcher('Permission').when(text = 'ALLOW').click(text = 'ALLOW')
    2 # d.watcher(name) ## creates a new named watcher.
    3 #  .when(condition)  ## the UiSelector condition of the watcher.
    4 #  .click(target)  ## perform click action on the target UiSelector.
  • 相关阅读:
    1082 射击比赛 (20 分)
    1091 N-自守数 (15 分)
    1064 朋友数 (20 分)
    1031 查验身份证 (15 分)
    1028 人口普查 (20 分)
    1059 C语言竞赛 (20 分)
    1083 是否存在相等的差 (20 分)
    1077 互评成绩计算 (20 分)
    792. 高精度减法
    791. 高精度加法
  • 原文地址:https://www.cnblogs.com/aziji/p/9354775.html
Copyright © 2011-2022 走看看