Ui"三重天"之重温Uiaumator(1)
移动端自动化技术和接口自动化技术是接下来需要深究和拓展的两方面,基于之前的薄弱基础,重温一波,本篇内容便是android UI自动化框架Uiautomantor1.
介于对移动端自动化并没有实际应用的尴尬处境,还是以<精通APP自动化测试>一书中的Uiaumator章节进行操作,也是将前面一篇落地。
环境搭建:
1、JDK
2、Android SDK
具体的环境变量配置便不再多记。
开发编译工具为eclipse。(可自定义)
众所周知,UI自动化技术核心点还是定位元素,此处当然也不例外,定位元素的方式有很多,有工具、代码等等;此处用的是Android SDK自带的UiautomatorViewer。
(Android SDK安装成功)位置在${android_home}\tools下:

启动成功:

这个是该出识别页面元素的控件,当然也有很多控件可以识别,此处便以Uiautomator Viewer为例。切记该控件是不能满足所有的页面元素识别条件的。
操作步骤:
1、环境搭建成功(JDK 和android SDK),下载android版本。
2、手机连接电脑,adb devices确认是否连接成功。(手机打开开发者模式,USB调试)

3、打开Uiautomator Viewer,点击该按钮,让控件同步手机页面信息。


可以看到,同步到了手机页面元素(微信登录页面)
4、使用eclipse创建类,切记类继承UiAutomatorTestCase类
插入一段简单的代码:(点击、等待)
package com.kaola; import com.android.uiautomator.core.UiDevice;
import com.android.uiautomator.core.UiObject;
import com.android.uiautomator.core.UiObjectNotFoundException;
import com.android.uiautomator.core.UiSelector;
import com.android.uiautomator.testrunner.UiAutomatorTestCase; import android.os.RemoteException; public class login extends UiAutomatorTestCase {
public void testlogin() throws UiObjectNotFoundException,RemoteException{
UiDevice device = getUiDevice();
device.pressHome();
device.wakeUp(); UiObject kaola = new UiObject(new UiSelector().className("android.widget.TextView").index(8));
assertTrue("There has not be found",kaola.exists());
kaola.click(); sleep(2000); UiObject login = new UiObject(new UiSelector().className("android.widget.RelativeLayout").index(1));
assertTrue("There has not be Find", login.exists());
login.click(); sleep(3000); UiObject login1 = new UiObject(new UiSelector().className(" android.widget.ImageView").resourceId("com.beihui.market:id/iv_tab_fg_news_web_user"));
assertTrue("There has not be Find", login1.exists());
login1.click();
}
}
一一来进行分解:
UiDevice device = getUiDevice();
device.pressHome();
device.wakeUp();
这段代码其作用在于获取到设备、点击home键和唤醒屏幕。
UiObject kaola = new UiObject(new UiSelector().className("android.widget.TextView").index(8));
assertTrue("There has not be found",kaola.exists());
kaola.click();
实例化kaola 对象,className为对象类名,index为索引。

此处有好多中定位方法,但是切记要唯一!
下方的assertTrue为断言
实例化对象click,点击!
脚本的灵活度还是需要自己去慢慢积累。
5、脚本编写完成后,为项目创建build.xml等文件。
命令:android create uitest-project -n <name> -t <android-sdk-ID> -p <path>
此处的<android-sdk-ID> 可使用android list target来进行获取。

6、创建成功时候,刷新项目,修改build.xml文件的help为build,使用ant进行构建。

修改完成,右键build.xml文件Ant build进行构建。

将文件构建成jar包。

7、将jar包发送至手机,运行。
发送命令:adb push D:\eclipse\work_space\Uiautomator\bin\Uiautomator.jar data/local/tmp
运行命令:adb shell uiautomator runtest Uiautomator.jar -c com.kaola.login
----------------------------------------------------------------------------------------------------------------------------------
OK、日后有关Uiaumator、或者移动端自动化有心得便记下来。
Ui"三重天"之重温Uiaumator(1)的更多相关文章
- UI“三重天”之Selenium(一)
关注一下UI自动化,记一记笔记. UI自动化的优缺点: 关于UI自动化的优缺点想来大家都有了解,优点:解放人力(并不是完全解放),用机器(涵盖工具.脚本等)代替人工完成测试工作,将测试用例转化为脚本实 ...
- UI“三重天”之实践Uiautomator1
说起来Uiautomator也有一年没碰过了.借此来回顾.总结一下. 也是阅读<精通APP自动化测试>一书.实践出真知的一个框架.编写了部分移动端UI自动化脚本.后续再深入学习. 虽然现在 ...
- UI“三重天”之appium(一)
官方介绍: Appium is an open-source tool for automating native, mobile web, and hybrid applications on iO ...
- UI“三重天”之selenium--常用API和问题处理(三)
Selenium常用API: 前面两篇示例代码中用到了一些selenium的API方法,例如定位元素的八种方法.访问url.等待.操作浏览器.获取title.点击.清理等等. 有关于selenium的 ...
- UI“三重天”之selenium--封装(二)
基础示例代码: /** * @author Richered **/ package com.sample; import org.openqa.selenium.By; import org.ope ...
- 那些年我们写过的三重循环----CodeForces 295B Greg and Graph 重温Floyd算法
Greg and Graph time limit per test 3 seconds memory limit per test 256 megabytes input standard inpu ...
- 解剖SQLSERVER 第十篇 OrcaMDF Studio 发布+ 特性重温(译)
解剖SQLSERVER 第十篇 OrcaMDF Studio 发布+ 特性重温(译) http://improve.dk/orcamdf-studio-release-feature-recap/ ...
- 转帖:用五分钟重温委托,匿名方法,Lambda,泛型委托,表达式树
用五分钟重温委托,匿名方法,Lambda,泛型委托,表达式树 这些对老一代的程序员都是老生常谈的东西,没什么新意,对新生代的程序员却充满着魅力.曾经新生代,好多都经过漫长的学习,理解,实践才能掌握委托 ...
- Android 高级UI设计笔记07:RecyclerView 的详解
1. 使用RecyclerView 在 Android 应用程序中列表是一个非常重要的控件,适用场合非常多,如新闻列表.应用列表.消息列表等等,但是从Android 一出生到现在并没有非常 ...
随机推荐
- SEO中H1标签的用法- 1
在网上找了很多关于H1标签对SEO意义的资料,不可否认H1对SEO具有重大的意义,但是具体情况每个人有每个人的见解吧.这里主要根据网上搜索的资料,以及自己的一些经验整理出来的,但是本人毕竟不是专业SE ...
- ios逆向工程-静态分析
最近在学习IOS逆向工程,查看网络上的资料也不是太多,边学边总结一下. 首先学习资料: 念茜(大神)的博客: http://nianxi.net <ios应用逆向工程 分析与实战> --- ...
- 每天一个linux命令(磁盘):【转载】du 命令
Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的. 1.命令格式: du [选项][文件] 2.命令功能 ...
- 浅析Java虚拟机结构与机制
转载自:http://blog.hesey.net/2011/04/introduction-to-java-virtual-machine.html http://coolshell.cn/arti ...
- 原生Ajax使用
Ajax基础 Ajax(Asynchronous JavaScript And XML)概念:通过XMLHttpRequest对象向服务器提出请求并处理响应,进行页面的局部更新. AJAX都有哪些优点 ...
- LOJ2503 NOIP2014 解方程 【HASH】
LOJ2503 NOIP2014 解方程 LINK 题目大意就是给你一个方程,让你求[1,m]中的解,其中系数非常大 看到是提高T3还是解方程就以为是神仙数学题 后来研究了一下高精之类的算法发现过不了 ...
- 【2018.06.26NOIP模拟】T3节目parade 【支配树】*
[2018.06.26NOIP模拟]T3节目parade 题目描述 学校一年一度的学生艺术节开始啦!在这次的艺术节上总共有 N 个节目,并且总共也有 N 个舞台供大家表演.其中第 i 个节目的表演时间 ...
- 用Python做图像处理
转自:http://blog.csdn.net/gzlaiyonghao/article/details/1852726 最近在做一件比较 evil 的事情——验证码识别,以此来学习一些新的技能.因 ...
- PEP
用python , PEP难以绕过. PEP是什么? Python Enhancement Proposals , 它集合了python的改进提案. 它不是版本递进的, 有些PEP是应该去读一 ...
- java 乐观锁CAS
乐观锁是一种思想,本身代码里并没有lock或synchronized关键字进行修饰.而是采用一种version. 即先从数据库中查询一条记录得到version值,在更新这条记录时在where条件中对这 ...