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 一出生到现在并没有非常 ...
随机推荐
- pdi vcard-2.1
vCard The Electronic Business Card Version 2.1 A versit Consortium Specification September 18, 1996 ...
- paddlepaddle初步印象
从其官网整理了一些资料如下: 1.基本概念 基本使用概念 PaddlePaddle是源于百度的一个深度学习平台.PaddlePaddle为深度学习研究人员提供了丰富的API,可以轻松地完成神经网络配置 ...
- Okhttp之RealConnection建立链接简单分析
在之前的博客中我们知道Okhttp在发起链接请求先从链接池中获取连接,如果链接池中没有链接则创建新的链接RealConnection对象,然后执行其connet方法打开SOCKET链接(详见< ...
- P4语言编程详解
1.源码目录结构 P4项目源码可以在github上直接获取(https://github.com/p4lang).P4项目由很多个单独的模块组成,每个模块就是一个子项目,下面分别简单介绍一下各模块的功 ...
- pkcs#5和pkcs#7填充的区别
最近做到了关于加密和解密的部分. 使用算法AES的时候,涉及到数据填充的部分,数据的填充有很多种方案,用的比较多的有pkcs#5,pkcs#7, 下面的都是从网上转来的.结论就是在AES 的使用中,p ...
- .pyc和.pyo文件有何用
百度知道:http://zhidao.baidu.com/link?url=_tFP1xglFnoEBObWtIArI3b3Ft0PQowx5m5ruIaX3mFIAFVr7vX45Lfb0geCjA ...
- js之放大镜效果
HTML: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- 全球常用NTP服务器地址及IP列表ntpdate
pool.ntp.org是一组授时服务器虚拟集群,在全球有3000多台服务器,只需要这样写就行了,具体哪台服务器提供服务无需关心. time.windows.com 微软 asia.pool.nt ...
- LOJ2360. 「NOIP2016」换教室【概率DP】【Floyed】【傻逼题】
LINK 思路 先floyed出两点最短路 然后就可以直接\(dp_{i,j,0/1}\)表示前i节课选择换j节,换不换当前这一节的最小贡献 直接可以枚举上一次决策的状态计算概率进行统计就可以了 我变 ...
- 51nod 1118 机器人走方格
M * N的方格,一个机器人从左上走到右下,只能向右或向下走.有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果. 收起 输入 第1行,2个数M,N,中间用空格隔开 ...