1、下载、安装JDK&配置Java环境变量

JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

配置环境变量:

1、右键我的电脑--属性--高级--环境变量

2、新建系统变量JAVA_HOME 和CLASSPATH

变量名:JAVA_HOME

变量值:C:\Program Files\Java\jdk1.7.0

变量名:CLASSPATH

变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

3、选择“系统变量”中变量名为“Path”的环境变量,双击该变量,把JDK安装路径中bin目录的绝对路径,添加到Path变量的值中,并使用半角的分号和已有的路径进行分隔。

变量名:Path

变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

验证配置是否成功:重新打开控制台输入:java -verison,如果显示Java版本信息表示安装成功。

2、下载、安装SDK、ADT&配置Android环境变量

ADT:http://developer.android.com/sdk/index.html

配置环境变量:

1、右键我的电脑--属性--高级--环境变量

2、在系统变量域中新建ANDROID_HOME变量

变量名:ANDROID_HOME

变量值:E:\appium\adt-bundle-windows-x86_64-20131030\sdk\(根据实际情况而定)

3、选择“系统变量”中变量名为“Path”的环境变量

变量名:Path

变量值:“;%Android_Home%\build-tools\android-4.4\;%Android_Home%\tools\;%Android_Home%\platform-tools”(android-4.4要视情况而定)

最后结果如图:

ANDROID_HOME配置如下:

系统变量Path配置如下:

3、下载、安装ANT&配置ANT环境变量

ANT下载地址:http://ant.apache.org

配置环境变量:

1、右键我的电脑--属性--高级--环境变量

2、新建系统变量

变量名:ANT_HOME

变量值:C:\apache-ant-1.8.1

3、选择“系统变量”中变量名为“Path”和“CLASSPATH”的环境变量

变量名:Path

变量值:%ANT_HOME%\bin;

变量名:CLASSPATH

变量值:%ANT_HOME%\lib;

4、创建UIAutomator工程

1、打开ADT自带的Eclipse,新建Java Project

如图:

2、添加JUnit库

工程右键Build Path==>Configure Build Path==>Add Library

如图:

3、添加android包和uiautomator包

工程右键Build Path==>Configure Build Path==>Add External JARs

如图:

4、新建class,import jar包,编写代码,这部分参见下面案例

5、运行代码

①查看SDK ID

CMD进入\Android-sdk\tools\目录下,运行命令:android list ,查看对应android版本的SDK的ID值,当前是2;

②创建build文件

在\Android-sdk\tools\目录下,运行命令:android create uitest-project -n <name> -t <android-sdk-ID> -p <path>

name是生成的jar包的名字,可以自定义,android-sdk-ID即上面看到的2,path是上面创建的工程路径,比如:android create uitest-project -n UIAutomator -t 2 -p d:\code\LearnUiAutomator

运行成功后会在工程的根目录下生成build.xml文件。

③编译生成jar

CMD进入项目的工程目录,运行命令:ant build,将使用ant编译生成jar,成功将会提示:

然后会在bin目录下生成jar文件。

④push并运行jar

adb push <jar文件路径> data/local/tmp
adb shell uiautomator runtest <jar文件名> -c <工程中的类名,包含包名>
比如:
adb push d:\code\LearnUiAutomator\bin\UiAutomator.jar data/local/tmp
adb shell uiautomator runtest UiAutomator.jar -c com.UiAutomator

然后就能看到手机会按照TestDemo中的步骤自动执行。

5、UIAutomator简单案例

package com.UIAutomator;

import com.android.uiautomator.core.UiObject;
import com.android.uiautomator.core.UiObjectNotFoundException;
import com.android.uiautomator.core.UiScrollable;
import com.android.uiautomator.core.UiSelector;
import com.android.uiautomator.testrunner.UiAutomatorTestCase; public class TestDemo extends UiAutomatorTestCase {
public void setChineseLan() throws UiObjectNotFoundException {
//进入操作前,先用Home键进入待机界面
getUiDevice().pressHome(); //进入“系统设置”菜单。也可以通过点击menu按键来实现
UiObject settingApp = new UiObject(new UiSelector().text("Settings"));
settingApp.click(); //等待3秒
try {
Thread.sleep(3000);
} catch (InterruptedException e1) {
e1.printStackTrace();
} //用滚动的方式查找并进入“语言和输入法设置”菜单
UiScrollable settingItems = new UiScrollable(
new UiSelector().scrollable(true)); UiObject languageAndInputItem = settingItems.getChildByText(
new UiSelector().text("Language & input"), "Language & input",
true);
languageAndInputItem.clickAndWaitForNewWindow(); //找到“English”的可点击项(因为当前是英文环境)
UiObject setLanItem = new UiObject(new UiSelector().text("English"));
setLanItem.clickAndWaitForNewWindow(); //Log输出
System.out.println("setLanItem-->" + setLanItem.getPackageName()); //由于无法识别中文,因此我们这里使用坐标去选择“简体中文”项
getUiDevice().click(350, 250); //点击返回键,回到待机界面
getUiDevice().pressBack();
getUiDevice().pressBack();
getUiDevice().pressBack();
}
}

6、UIAutomator对象介绍

UiDevice对象

getUiDevice()的方法可以得到一个UiDevice的对象,通过这个对象可以完成一些针对设备的动作:
click(int x, int y)
----在(x,y)表示的像素地方点击
pressBack()
pressDelete()
pressEnter()
pressHome()
pressMenu()
pressSearch()
----点击相应的按键
wakeUp()
----当手机处于灭屏状态时,唤醒屏幕,并解锁。
swipe(startX, startY, endX, endY, steps)
----在手机上滑动,从(startX,startY)到(endX,endY)。steps表示滑动的这个距离分为几步完成,数目越少,滑动幅度越大。
setOrientationLeft()
setOrientationRight()
----将手机向相应方向旋转。
setOrientationNatural()
----将手机旋转状态回归正常。

UiSelector对象

这个对象可以理解为一种条件对象,描述的是一种条件,经常配合UiObject使用,可以得到某个(某些)符合条件的控件对象。
checked(boolean val)
----描述一种check状态为val的关系。
className(className)
----描述一种类名为className的对象关系
clickable(boolean val)
----与checked类似,描述clickable状态为val的关系
description(desc)
----不解释
descriptionContains(desc)
----与description类似
focusable(boolean val)
----与checked类似
index(index)
----用当前对象在父对象集中的索引作为描述
packageName(String name)
----用包名作为条件描述
selected(val)
----描述一种选择关系
text(text)
----最为常用的一种关系,用控件上的文本即可找到当前控件,需要注意,所有使用text属性找到的控件,必须是英文的。也就是说,不支持通过中文查找控件!
textContains(text)
----与text类似
textStartsWith(text)
----与text类似

UiObject对象

这个对象可以理解为控件的对象。 一般一个UiObject对象可以通过一下形式得到:
UiObject mItem = new UiObject(new UiSelector().text("English"));
也就是配合一个UiSelector就可以得到一个控件。
click()
----点击控件
clickAndWaitForNewWindow()
----点击某个控件,并等待窗口刷新
longClick()
----长按
clearTextField()
----清除文本,主要针对编辑框
getChildCount()
----这个方法可以看出,其实UiObject也可以是一个控件的集合
getPackageName()
----得到控件的包名
getSelector()
----得到当前控件的选择条件
getText()
----得到控件上的Text
isCheckable()
isChecked()
isClickable()
isLongClickable()
isScrollable()
isScrollable()
isSelected()
----判断是否具备某个属性

UiCollection对象

这个对象可以理解为一个对象的集合。因为UiSelector描述后得到的有可能是多个满足条件的控件集合,因此可以用来生成UiCollection:
UiCollection mUiCollection = new UiCollection(new UiSelector().text("Settings"));
getChild(selector)
----从集合中再次通过UiSelector选择一个UiObject对象
getChildByDescription(childPattern, text)
----从一个匹配模式中再次以text为条件选择UiObject
getChildByText(childPattern, text)
----与上面类似。
getChildCount()
----得到当前集合中控件的个数

UiScrollable对象

UiScrollable可以生成一个滚动动作的对象,其最大的作用就是可以实现滚动的查找某个元素。用法如下:

UiScrollable settingItems = new UiScrollable( new UiSelector().scrollable(true));

等待操作和添加Log

如果是对于一个标准的UiObject对象,可以通过clickAndWaitForNewWindow的方法在点击之后主动等待一段事件,但是如果需要额外的等待一段时间,特别对于getUiDevice().pressHome();这种操作,可能需要很长的事件去为下一步操作获取更多的事件,此时我们可以使用线程的sleep方法去实现:

Thread.sleep(5000);

而添加Log的方法也可以通过Java标准的println来实现:
System.out.println("This used to print some log!!!" + setLanItem.getText());
以上Log将会在jar被运行时通过CMD窗口打印出来。

UIAutomator环境搭建的更多相关文章

  1. UiAutomator环境搭建及详细操作

    一.环境搭建 1.1 必备条件 JDK SDK(API高于15) Eclipse(安装ADT插件) ANT(用于编译生成的jar) 安装JDK并添加环境变量 1.2 详细步骤 1.安装JDK并添加环境 ...

  2. Android UiAutomator环境搭建及使用(QQ交流群:490451176)

    Android自动化框架常用的有很多,本身也提供了很多自动化测试框架,每个都有其优势和不足 .当然对于我们做UI自动化测试来说,简单易用即可. UiAutomator也是Android提供的自动化测试 ...

  3. Android自动化测试-UiAutomator2环境搭建

    Android自动化测试-UiAutomator环境搭建(QQ交流群:490451176) 一.环境准备 1. 安装android sdk,并配置环境变量 2. 安装android studio,国内 ...

  4. Uiautomator简介及其环境搭建、测试执行

    UiAutomator框架使用指南 UiAutomator是Google开发的自动化测试工具,通过UI创建自动化测试代码,来测试界面(UI)的有效功能,可以针对应用程序运行在一个或更多的设备上.我们并 ...

  5. appium 环境搭建 java

    1 安装node.js 1.1 安装node.js http://nodejs.cn/download/ 1.2.下载后直接点击exe,按照提示一步一步的安装 1.3 安装成功后,运行cmd,输入no ...

  6. python_Appium测试环境搭建

    Android环境搭建 移动端Appium环境部署比Web的selenium环境稍微复杂一些,如用python编写测试用例脚本或者开发测试框架以及UI自动化操作方法是一样的,基本是通用.因两者都是基于 ...

  7. 【转】自动化测试 - Appium + Python史上最全最简环境搭建步骤

    一,为什么是Appium借一张图: 1.1 Appium优点 l  开源 l  跨架构:NativeApp.Hybird App.Web App l  跨设备:Android.iOS.Firefox ...

  8. Appium环境搭建说明(包括报错处理)

    Appium环境搭建说明 一.环境配置 前提是windows系统已安装以下软件: 1.jdk 我装的是1.8.0 2.android-sdk 3.python,3.4-3.6 5.Node.js,v8 ...

  9. 手机APP测试环境搭建---appium

    这些都不是重点---一切都可以参考虫师   Appium移动自动化测试(一)--安装Appium 1.ADB的安装:ADB(ANDROID DEBUG BRIDGE) 应用场景: 针对移动端 Andr ...

随机推荐

  1. FastDFS概念、原理及CentOS7下安装实战

    一.FastDFS基本概念及基本原理 1.什么是FastDFS FastDFS是用c语言编写的一款开源的分布式文件系统.FastDFS为互联网量身定制,充分考虑了冗余备份.负载均衡.线性扩容等机制,并 ...

  2. Spring mvc 4系列教程(三)—— Spring4.X的新特性

    1.Spring4.0的新特性 从2004年Spring的1.0发布后,后面又发布了很多重要的版本:Spring2.0提供了XML命令空间和AspectJ的支持:Spring2.5提出了注解驱动(an ...

  3. 百度2015校园招聘面试题回忆录(成功拿到offer)

    引言 盼望着,盼望着……今年终于轮到我找工作了,还深深记得去年跟在师兄后面各种打酱油的经历,当时觉得找工作好难啊,怎么面一个败一个,以后还能找到工作不? 不过当时的失败也是理所当然的,那时候没有做任何 ...

  4. 常见的加密解密算法-MD5

    一.MD5加密概述 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.该算法的文件号为RFC 13 ...

  5. 在使用Git提交代码的时候犯了个低级错误

    今天在使用git提交代码的时候,犯了个很低级的错误,按照一切流程当我add并commit提交代码,最后使用push到远程仓库, 接下来奇怪的事情发生了,push之后,查看远程仓库代码并没有发现提交记录 ...

  6. Git Windows客户端保存用户名和密码

    解决Git Windows客户端保存用户名和密码的方法,至于为什么,就不想说了. 1. 添加一个HOME环境变量,值为%USERPROFILE% 2. 开始菜单中,点击“运行”,输入“%Home%”并 ...

  7. 并发编程 —— Java 内存模型总结图

    关于 Java 内存模型的类似思维导图. 如有错误,还请指正.

  8. C# Azure 设置云端应用程序的默认时间

    在微软云Azure中,应用程序(website)的默认时间是按照美国UTC的时间的. 例如,在应用程序中获取DateTime.Now,的时候,是获取UTC的时间,不是中国的时间. 所以我们开始在这里设 ...

  9. Spring基础(8) : 延迟加载,Bean的作用域,Bean生命周期

    1.延迟加载 <bean id="p" class="com.Person" lazy-init="true"/> @Confi ...

  10. Spring源码分析:非懒加载的单例Bean初始化过程(下)

    上文Spring源码分析:非懒加载的单例Bean初始化过程(上),分析了单例的Bean初始化流程,并跟踪代码进入了主流程,看到了Bean是如何被实例化出来的.先贴一下AbstractAutowireC ...