Appium基础学习之 | UiAutomator使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ouyanggengcheng/article/details/85237701

    在Appium基础学习之 | Bootstrap源码分析中留下了一个尾巴就是Bootstrap如何转化代码到UiAutomator执行,想了想觉得有必要先把UiAutomator使用简单了解下,于是有了本文(归于UiAutomator,现在最新版的UiAutomator2后续再讲,路需要一步步走)。

    Android团队在4.1版本(API 16)中推出了一款全新的UI自动化测试工具UiAutomator。并且还提供一款图形界面工具扫描和分析应用UI控件的UiAutomatorViewer辅助自动化测试控件定位。

一、UiAutomator概述

1.UiAutomator支持环境

(1)Android SDK Tool必须支持21版本以上

(2)Android SDK Platform工具包16版本以上

2.UiAutomator主要的几个API

(1)UiDevice

      用于访问与操作设备,包括访问设备的分辨率、屏幕大小等信息;也可以操作设备的菜单、返回、Home键、点击事件等等。

(2)UiSelector

用于根据条件查找并定位界面上的控件。从Appium的角度上来讲,它就如同定位。UiSelector提供了很多方法(条件)来查找定位界面上的控件,如text、desc、id、className等等方法,与Appium上各种定位方法呼应,这也是2个工具能相辅相成的结果。

(3)UiObject

      表示控件,它由UiSelector查找定位得到;控件也提供了很多方法操作它,如点击、得到控件信息、检查控件状态等等。

(4)UiCollection

      表示控件集合。

(5)UiScrollable

      可操作滑动控件,支持水平滑动、垂直滑动。

具体参考博文:http://blog.chengyunfeng.com/?p=504#ixzz3wTKp7qhe

二、UiAutomator执行环境

1.Eclipse环境

继续使用Appium环境搭建中IDE集成的Eclipse

(1)新建Java Project项目,项目名自定义,文中用TestUiAutomator

(2)引入Junit库

选择Add Library,弹出对话框选择Junit

点击Next进入下一步

选择Junit版本,Eclipse默认会安装Junit插件版本,高版本的Eclipse会安装Junit4,如果选择Junit版本而Eclipse并没有会提示报错。如上选择的是Junit4版本,点击Finish按钮即可。(UiAutomator最低支持Junit3,而UiAutomator2最低支持Junit4,Junit4使用的注解来表示One Test)

(3)引入UiAutomator相关jar包

在Android SDK集成工具包中platforms目录下是不同Android API的工具包,在这些包下都能找到2个jar,分别是Android.jar与UiAutomator.jar包,如下图。这两个jar是UiAutomator需要的,但是需要注意,建议引入API 18版本及以上,因为API 18的这两个jar支持id定位,低于18版本是不支持id定位的。

引包过程就免了,引入2个jar后如下:

(4)新建Package:com.test

输入包名点击Finish完成,包名可自定义。

(5)新建类TestRunner,代码如下

public class TestRunner extends UiAutomatorTestCase{
        
    public void testOne() throws UiObjectNotFoundException{   
        try {
            //唤醒屏幕
            getUiDevice().wakeUp();
            //进入操作前,先用Home键进入待机界面 
            getUiDevice().pressHome(); 
            
            //启动应用
            Runtime.getRuntime().exec("am start com.main/com.main.MainActivity");          
            sleep(3000);
            //点击
            UiObject clickObject = new UiObject(new UiSelector().resourceId("com.main:id/android_tab"));
            clickObject.click();            
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }     
    }
}

这里需要注意点是使用UiAutomator1.0版本,它默认使用的是Junit3.0执行,所以需要继承UiAutomatorTestCase,方法中也必须以test开头命名。

2.Ant环境

下载地址:https://ant.apache.org/bindownload.cgi

下载zip版本解压,然后把解压文件夹下bin目录的地址配置到环境变量,cmd验证可以输出版本号即可

3.Android环境

在Appium环境部署中已配置好

三、UiAutomator执行

1.获取SDK ID

先进入项目所在路径,输入android list命令,得到SDK ID(注意需要API大于15)

2.创建build文件

命令:android create uitest-project -n <name> -t <android-sdk-ID> -p <project name>

-n表示UiAutomator接下来要执行的使用的名字

-t表示SDK ID

-p表示Eclipse上创建项目的名字,如果没有进入项目目录,则需要输入整个目录加上项目名

执行命令后在项目下会生成一个build.xml文件

3.构建jar包

进入build.xml文件目录,输入命令:ant build,地址构建出jar包

构建完成后在项目bin目录下多了个jar包,这个jar的名字是上面创建build.xml文件命令-n所命名的。

4.推送jar包到设备

命令:adb -s <devices id> push <jar path> data/local/tmp

-s表示指定目标机器,在前面也使用过

5.执行

命令:adb -s <devices id> shell uiautomator runtest <jar name> -c <包名.类名>

 

猜你喜欢

转载自blog.csdn.net/ouyanggengcheng/article/details/85237701