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.
  • 相关阅读:
    大文件上传实现总结
    JDK线程池异常处理方式
    packageinfo.java 作用
    VBA 发送邮件代码
    TCP/IP协议、DoD模型、OSI模型
    3D空间基础概念之三:几何变换
    IP寻址
    IP地址排错命令
    WIN7用户文件夹迁移
    IP报头包含的协议
  • 原文地址:https://www.cnblogs.com/aziji/p/9354775.html
Copyright © 2011-2022 走看看