• uiautomator特殊用法总结


    uiautomator接口库里有很多常用方法,本章只是简单的介绍一些我在实际工作中常用的方法和心得。

    1. 打开App
      这个几乎是自动化测试人员必用方法,我一开始使用的是公司自己封装的api,它接口方法是app_start(‘package’,‘activity’)。在绝大多数操作时是没问题的,但是会出现一些个别app打开无效的情况。但是我用原生uiautomator就不会出现此类问题。

           d.app_start('package')
      
    2. 滑动操作

           # 垂直滑动到底部/顶部
           d(scrollalbe=True).fling.toEnd() 
           d(scrollable=True).fling.toBeginning()
           # 滚动至文字出现
           d(scrollable=True).scroll.to(text="AAAA")
      
    3. 获取文字
      当我们需要获取一个text或者description经常会变化的控件时,该如何操作,例如如图获取电池百分比。很明显电池的电量不是固定的,它会随着时间和使用而随之减少或充电增加。

      法一:

           # 利用xpath进行定位获取元素所有信息info
           info = d.xpath('//*[@resource-id="com.android.settings:id/donut"]').info
           result_use = info["contentDescription"]    # 字典查找
           print(result_use)
      

      法二:

           # 循环加all() 来对text进行查找
           for i in d.xpath(
                   '//*[@resource-id="com.android.settings:id/recycler_view"]/android.widget.LinearLayout['
                   '9]/android.widget.RelativeLayout[1]/android.widget.TextView[2]').all():
               text = i.text
               print(text)
      
    4. button按钮状态
      现在很多安卓设备的一些开关操作换成了button,点击一下开/关。我们人眼观察很容易知道它的状态,如果不小心关闭了我们发现了再手动给它打开即可。
      但是在自动化测试过程中我们如何来判断或者确认,某个开关的状态ON/OFF。
      以Wi-Fi开关为例:怎么判断我的Wi-Fi是开启还是关闭了呢?

      我们在用weditor来确认控件信息时会发现其实这个按钮是有text信息的。 那我们是不是可以用该控件的其他信息➕text信息进行判断Wi-Fi状态
           # 利用xpath和text判断该相机按钮是否开启
           if d.xpath('//*[@resource-id="com.mediatek.camera:id/expand_view"]/android.widget.Switch[1]').text == "ON":
                 pass
           else:
                 print(‘该相机开关按钮处于关闭状态‘)
      
    5. 页面存在多个button
      如果页面存在多个相同属性的元素可以使用instance进行选择;
      如三个相同的元素他们的resourceid和ClassName选择一个即可,然后在使用instance:
      第一个:d(resourceId="com.netease.cloudmusic:id/a6w", className="android.widget.ImageView").click()
      第二个:d(resourceId="com.netease.cloudmusic:id/a6w", className="android.widget.ImageView", instance=1).click()
      第三个:d(resourceId="com.netease.cloudmusic:id/a6w", className="android.widget.ImageView", instance=2).click()

      或者也可以利用weditor工具一层一层去找该控件的xpath

    6. 拖拽功能

           #将text拖拽到某一点
           d(text='AAAA').drag_to(500, 500, duration=0.5)
           #将resourceId拖拽到某一点
           d(resourceId='com.android.calendar:id/header').drag_to(500, 500, duration=0.5)
           #将text拖拽到text
           d(text='AAAA').drag_to(text='aaaa', duration=0.5)
      
    7. 其他

    网上有很多别人整理的uiautomator的API文档,值得参考学习:
    一:https://www.cnblogs.com/sc912/p/11279228.html
    二:https://www.cnblogs.com/sc912/p/11283665.html
    三:https://www.cnblogs.com/sc912/p/11284660.html

  • 相关阅读:
    UVA 10692
    XCODE插件 之 Code Pilot 无鼠标化
    VC版超级记事本
    抓包函数-pcap_next
    通过PowerShell卸载全部的SharePoint 2010 解决方式
    typedef和#define的差别——————【Badboy】
    一个简单演示样例来演示用PHP訪问表单变量
    怎样隐藏Windows7 系统保留分区
    2016 360笔试题------找第一个仅仅出现一次的字符
    Eclipse中Easy Shell插件配置PowerCmd
  • 原文地址:https://www.cnblogs.com/blackpink/p/14056917.html
Copyright © 2020-2023  润新知