Android自动化测试UIautomator-UiObject


booleanperformMultiPointerGesture(PointerCoords.. 执行单手指触控手势,可定义任意手势, . touches) 与形状
手势操作 booleanperformTwoPointerGesture(Point startPoint1, Point startPoint2, Point endPoint1, Point endPoint2, int steps) booleanpinchIn(int percent, int steps) booleanpinchOut(int percent, int steps)
声明UiObject对象后,不管对象存不存在都不会 有问题----先声明对象后操作 当对象可能出现可能不出现的时候,需要对对象 进行判断
UiObject gettextObject=new UiObject(new UiSelector().className(“android.widget.TextView”));//获取第一个textview String textString=gettextObject.getText();//获得textview的文本
获取对象 属性
RectgetBounds() UiObjectgetChild(UiSelector selector) intgetChildCount() StringgetClassName() StringgetContentDescription() UiObjectgetFromParent(UiSelector selec tor) StringgetPackageName() final UiSelector getSelector() StringgetText() RectgetVisibleBounds()
执行任意两个手指触控手势,模拟两个手 指手势 手势操作,两点向内收缩
手势操作,亮点向外张开
UiObject fram=new UiObject(new UiSelector().className("android.widget.FrameLayout")); PointerCoords p = new PointerCoords(); p.x = 500; p.y = 500; p.pressure = 1; p.size = 1; PointerCoords p1 = new PointerCoords(); p1.x = 600; p1.y = 600; p1.pressure = 1; p1.size = 1; PointerCoords p2 = new PointerCoords(); p2.x = 500; p2.y = 500; p2.pressure = 1; p2.size = 1; fram.performMultiPointerGesture(p,p1,p2);
检查对象的checkable属性是否为true 检查对象的checked属性是否为true 检查对象的clickable属性是否为true 检查对象的enabled属性是否为true 检查对象的focusable属性是否为true 检查对象的focused属性是否为true 检查对象的longclickable属性是否为true 检查对象的scrollable属性是否为true 检查对象的selected属性是否为true
booleanisCheckable()
booleanisChecked() booleanisCห้องสมุดไป่ตู้ickable() booleanisEnabled() booleanisFocusable() booleanisFocused() booleanisLongClickable() booleanisScrollable() booleanisSelected()
一、点击与长按
booleanclick()
booleanclickAndWaitForNewWindow(long timeout)
点击对象
点击对象,等待新窗口出现,参数为等待超时时长
点击
booleanclickAndWaitForNewWindow() booleanclickBottomRight() booleanclickTopLeft() booleanlongClick()
拖动对象往下滑动
拖动对象往左滑动 拖动对象往右滑动 拖动对象往上滑动
滑动
booleanswipeRight(int steps)
booleanswipeUp(int steps)
UiObject jiedianhua=new UiObject(new UiSelector().textStartsWith("下 拉接听")); jiedianhua.swipeDown(10);
属性判断
//声明开关对象 UiObject inputtextObject=new UiObject(new UiSelector().className("android.widget.Switch")); if(inputtextObject.isChecked()){inputtextObject.click();}//如果开关 是开,则点击关闭
点击对象,等待新窗口出现 点击对象的右下角 点击对象的左上角 长按对象,对对象执行长按操作 长按对象的右下角 长按对象的左上角
长按
booleanlongClickBottomRight() booleanlongClickTopLeft()
UiObject ok=new UiObject(new UiSelector().text(“OK”));//声明对象 ok.click();//操作点击对象
获得对象矩形坐标,矩形左上角坐标与右下角坐标
获得对象的子类对象,可以递归获取子孙当中某个对象
获得下一级子类数量 获得对象类名属性的类名文本 获得对象的描述属性的描述文本 从父类获取子类,按照uiseletor获取兄弟类
获得对象包名属性的包名文本 获得selector用于调试 获得对象的文本属性中的文本 返回可见视图的范围,如果视图的部分是可见的, 只有可见部分报告的范围
输入文本 清除文本
booleansetText(String text) voidclearTextField()
在对象中输入文本 清除编辑框中的文本
//短信编辑框中输入文本内容 UiObject inputmess=new UiObject(new UiSelector().text("请输入内容")); inputmess.setText("短信内容"); //输入完后清除短信编辑框文本内容 UiObject clear=new UiObject(new UiSelector().text("短信内容")); clear.clearTextField();
booleanwaitForExists(long timeout) 判断 对象 是否 存在 booleanwaitUntilGone(long timeout) booleanexists()
等待对象出现 等待对象消失 检查对象是否存在
//打开计算器 Runtime.getRuntime().exec(“am start –n com.android.calculator2/com.android.calculator2.Calculator"); //计算器界面“+”对象 UiObject addObject=new UiObject(new UiSelector().text("+")); //实时检查等待对象出现 addObject.waitForExists(10000);
1
UiObject主要对对象进行操作
(uiobject)获取对象
按照一定的条件(uiseletor)获取对象
操作对象
文本输入与清除
点击/长按 Click/longclick
拖动/滑动 Drag/swipe
手势操作
获取子类 getChild getChildCount
属性
对象 操作
获取属性:getXXXX 属性判断:isxxxxx 对象是否存在 exist
拖拽
booleandragTo(UiObject destObj, int steps) boolean dragTo(int destX, int destY, int steps) booleanswipeDown(int steps) booleanswipeLeft(int steps)
拖拽对象到另一个对象位置上,步长可设置拖动的速度 拖拽对象到屏幕某个坐标位置上,步长可设置拖动速度
合集下载

Android移动端自动化测试框架UIAutomator2入门

Android移动端自动化测试框架UIAutomator2入门

Android移动端自动化测试框架UIAutomator2入门随着智能手机的普及,移动应用也越来越受到欢迎。

移动端应用相对于传统的Web应用或桌面应用,有自身独特的测试需求。

在这种情况下,自动化测试框架成为了移动端测试的必备工具。

本文将介绍Android移动端自动化测试框架UIAutomator2的基础知识和使用方法。

一、UIAutomator2介绍UIAutomator2是Android平台上的一个自动化测试框架,它的作用是为测试人员提供一种自动化测试手段,以验证移动应用的正确性、稳定性和性能。

UIAutomator2可以模拟用户在移动应用上的各种操作,包括点击、滑动、输入等等,以实现对应用的全面自动化测试。

二、UIAutomator2的环境搭建要使用UIAutomator2,我们首先需要构建相应的测试环境。

具体步骤如下:1. 安装Android SDK,并配置环境变量。

2. 下载UIAutomator2的源代码。

3. 根据源代码中的README文档,进行所需的编译和安装。

三、UIAutomator2的使用1. 创建测试脚本使用UIAutomator2进行自动化测试需要编写相应的测试脚本。

测试脚本是由Java编写的,并可以使用Android Studio进行编辑和调试。

下面是一个简单的测试脚本:```import androidx.test.uiautomator.By;import androidx.test.uiautomator.UiDevice;public class MyTest {public static void main(String[] args) throws Exception {UiDevice device = UiDevice.getInstance();device.pressHome();device.findObject(By.text("Chrome")).click();device.findObject(By.res("com.android.chrome:id/search_box_text")).c lick();device.findObject(By.res("com.android.chrome:id/search_box_text")).s etText("UIAutomator2");device.pressEnter();}}```这个脚本的功能是启动Chrome浏览器,并在浏览器中搜索“UIAutomator2”。

android自动化测试UIautomator-UiCollection

android自动化测试UIautomator-UiCollection

public int getChildCount (UiSelector childPattern) 按照uiselector递归查找所有符合条件的子子孙孙集合的的数量
参数 childPattern 选择条件 返回值 符合条件的子子孙孙集合数量
例子1:判断界面不再变化
思路: 对于95%以上的大部分界面,界面的变化会跟谁着元素的变化 1.通过判断子元素数量,与特定元素数量不再变化; 2.获取文件元素,5个对象进行判断,文本不在变化;
例子2:判断不同的解锁界面,编写通用解锁程序
Famelayout 布局一般不会变化,不同的解锁 界面布局不一样,依据布局数量 进行区分不同解锁界面,再进行 相应的处理
谢谢!
/** * 需求:获取界面元素类的个数与5个textview的字符串,返回一个字符串数组,用于判断界面是否变化 * 使用:请在需要判断的位置插入此函数,对比两次范围的数组是否相等,判断界面是否变化 * @return * @throws UiObjectNotFoundException */ public String[] isUiChange() throws UiObjectNotFoundException { UiCollection framCollection = new UiCollection( new UiSelector().className("android.widget.FrameLayout")); int count=0; String[] ts={"a","a","a","a","a"}; if (framCollection.exists()) { int textcount = framCollection.getChildCount(new UiSelector() .className("android.widget.TextView")); int linearcount = framCollection.getChildCount(new UiSelector() .className("android.widget.LinearLayout")); int viewcount = framCollection.getChildCount(new UiSelector() .className("android.view.View")); count = textcount + linearcount + viewcount;} for (int j = 0; j < 5; j++) { UiObject textObject = new UiObject(new UiSelector().className( "android.widget.TextView").instance(j)); if (textObject.exists()) { ts[j] = textObject.getText(); } else { break;}} String[] change={String.valueOf(count),ts[0],ts[1],ts[2],ts[3],ts[4]}; return change;}

Android自动化测试之Uiautomator_UiDevice-API详解

Android自动化测试之Uiautomator_UiDevice-API详解

Android自动化测试之Uiautomator-UiDevice-API详解*****************[在此处键入]目录UiDevice-API (2)1.click (2)2.freezeRotation (2)3.getCurrentPackageName (3)4.getDisplayHetght与getDisplayWidth . 35.getDisplayRotation (3)6.getDisplaySizeDp (4)7.getProductName (5)8.监听器 (5)9.按键事件 (8)10.旋转 (9)11.锁屏与唤醒 (10)12.等待对象 (11)13.截图 (12)14.拖拽与滑动 (12)15.通知栏.快速设置 (13)16.窗口布局结构 (13)UiDevice-APIuidevice提供关于设备的状态信息。

你也可以使用这个类来模拟装置上的用户的行为,如按方向键或按菜单按钮。

1.click.例子:点击坐标点(300,300)UiDevice.getInstance().click(300,300);或getUiDevice().click(300,300);推荐使用上面的UiDevice.getInstance()进行书写,如果使用下面的书写,在同一个类中没问题,如果要在其他类中的方法使用了getUiDevice,调用到本类中不会有语法错误,但是执行的时候会出错。

以下也是如此,不再写getUiDevice。

2.freezeRotation例子:当前手机状态为竖屏,锁定当前手机为竖屏,不让手机跟随着手机物理旋转而旋转。

UiDevice.getInstance().freezeRotation();3.getCurrentPackageName例子:当前在QQ界面,我想要知道QQ的包名4.getDisplayHetght与getDisplayWidth例子:获得当前手机的屏幕宽度与高度,即获得当前手机的屏幕分辨率5.getDisplayRotation返回整数0代表当前物理旋转0度1代表当前物理旋转90度2代表当前物理寻转180度3代表当前物理旋转270度例子:获取当前界面的旋转状态:switch(UiDevice.getInstance().getDisplayRotation()){case 0:System.out.println("当前旋转状态0度");break;case 1:System.out.println("当前旋转状态90度");break;case 2:System.out.println("当前旋转状态180度");break;case 3:System.out.println("当前旋转状态270度");break;default:break;}6.getDisplaySizeDpDP知识:在android系统中单位DP也就是DIP:device independent pixels(设备独立像素).dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。

Android测试工程师的自动化测试框架选择

Android测试工程师的自动化测试框架选择

Android测试工程师的自动化测试框架选择自动化测试框架是Android测试工程师日常工作中必不可少的工具之一,选择适合的自动化测试框架对于提高测试效率和质量具有重要意义。

本文将介绍几种常见的Android自动化测试框架,并讨论它们的优缺点,以便Android测试工程师在选择时能够根据实际需求作出明智的决策。

1. AppiumAppium是一款开源的跨平台自动化测试框架,支持Android和iOS平台的自动化测试。

Appium使用WebDriver协议来驱动手机应用程序,可以通过编写脚本实现各种操作,如点击、输入、滑动等。

优点是支持多种编程语言,如Java、Python、Ruby等;缺点是配置相对复杂,需要连接真机或模拟器来运行测试。

2. EspressoEspresso是Google推出的用于Android应用程序的自动化测试框架,主要用于功能测试和界面测试。

Espresso使用简单,提供了丰富的API来进行UI操作和断言验证,适合在开发阶段快速迭代的场景下使用。

缺点是它只支持Android平台,对于跨平台需求不够灵活。

3. UI AutomatorUI Automator是Google提供的用于Android系统级UI测试的框架,可以对应用程序以及系统应用进行自动化测试。

UI Automator可以实现跨应用的测试,使用起来相对简单,并且提供了强大的UI交互能力。

缺点是编写测试脚本相对繁琐,不够灵活,对于应用程序内部的UI测试不够方便。

4. Robot FrameworkRobot Framework是一款通用的自动化测试框架,支持多种应用程序、平台和编程语言。

它使用关键字驱动的方式编写测试用例,易于学习和使用,并且提供了大量的扩展库来完成各种测试任务。

优点是灵活性高,可扩展性好;缺点是相对于其他框架,学习成本较高。

5. CalabashCalabash是一款适用于Android和iOS应用的自动化测试框架,基于Cucumber和Ruby开发。

Android自动化测试工具的选择与比较

Android自动化测试工具的选择与比较

Android自动化测试工具的选择与比较Android应用程序的自动化测试在软件开发过程中扮演着重要的角色。

为了保证应用程序的质量和稳定性,开发人员需要选择一个适合他们需求的自动化测试工具。

在本文中,我们将比较几种常见的Android自动化测试工具,并为您提供有关如何选择适合您的项目的建议。

一、UI AutomatorUI Automator是由Google开发的一个基于黑盒测试的自动化测试框架。

它允许开发人员跨应用程序的用户界面元素进行测试。

UI Automator支持Android 4.1及以上的设备,并提供了丰富的API来与设备进行交互。

它的优点是可以通过模拟用户的真实操作来测试应用程序的性能和用户体验。

然而,UI Automator的学习曲线较陡峭,对于新手来说可能需要一些时间来熟悉其使用方法。

二、EspressoEspresso是一个由Google开发的轻量级自动化测试框架,旨在简化Android应用程序的UI测试。

Espresso的主要特点是易于使用和快速执行测试。

它提供了简洁的API用于编写可读性强的测试代码,并且能够处理异步操作和UI事件。

Espresso还集成了多种延时和等待机制,以便于开发人员进行稳定的测试。

然而,Espresso的适用范围相对较窄,主要针对应用程序的单个Activity进行测试。

三、AppiumAppium是一个开源的跨平台自动化测试框架,支持Android和iOS平台。

它使用WebDriver协议来驱动真实的设备和模拟器,可以以多种编程语言编写测试脚本。

Appium的优点是支持网页应用测试和混合应用测试,可以覆盖更广泛的测试场景。

然而,Appium的配置和设置相对复杂,对于初学者来说可能需要一些技术知识和经验。

四、Robot FrameworkRobot Framework是一个通用的自动化测试框架,支持多种应用程序和系统的测试。

它具有可扩展性、易用性和灵活性的特点。

uiautomator2+weditor

uiautomator2+weditor

uiautomator2+weditor之前呢⼀直⽤的python+appium做安卓⾃动化测试,最近看⼤佬的博客,发现了⼜⼀个神器,简单介绍⼀下哈:iautomator是Google提供的⽤来做安卓⾃动化测试的⼀个Java库。

功能很强,可以对第三⽅App进⾏测试,获取屏幕上任意⼀个APP的任意⼀个控件属性,并对其进⾏任意操作,但有两个缺点:1. 测试脚本只能使⽤Java语⾔2. 测试脚本必须每次被上传到设备上运⾏。

1.安装uiautomator2E:\python36\Scripts>pip3 install -U uiautomator22.adb连上⼿机确保⼿机和电脑能连得上,使⽤adb devices查看链接状态,adb相关的环境本篇就不多说了,搞android测试的都知道1.E:\python36\Scripts>adb devices2.List of devices attached3.adb server version (31) doesn't match this client (40); killing...4.* daemon started successfully5.emulator-5554 device安装atx-agentpython -m uiautomator2 init1.E:\python36\Scripts>python -m uiautomator2 init2.[D 190716 23:34:53 __main__:28] use cache directory: C:\Users\dell\.uiautomator23.Namespace(serial=None, server=None, subparser='init') init4.[I 190716 23:34:53 __main__:88] >>> Initial device AdbDevice(serial=emulator-5554)5.[I 190716 23:34:53 __main__:172] Install minicap, minitouch6.[Kminitouch |################################| 33.5K / 33.5K7.[?25h[D 190716 23:34:56 __main__:157] Push https:///openatx/stf-binaries/raw/master/node_modules/minitouch-prebuilt/prebuilt/x86/bin/minitouch -> /data/local/tmp/minitouch:07558.[I 190716 23:34:56 __main__:176] abi:x86 seems to be android emulator, skip install minicap9.[I 190716 23:34:56 __main__:182] Install com.github.uiautomator, com.github.uiautomator.test10.[D 190716 23:34:56 __main__:100] Shell: ('pm', 'uninstall', 'com.github.uiautomator')11.[D 190716 23:34:56 __main__:100] Shell: ('pm', 'uninstall', 'com.github.uiautomator.test')12.[Kapp-uiautomator.apk |################################| 1.7M / 1.7M.7M13.[?25h[D 190716 23:35:05 __main__:157] Push https:///openatx/android-uiautomator-server/releases/download/1.1.7/app-uiautomator.apk -> /data/local/tmp/app-uiautomator.apk:064414.[D 190716 23:35:05 __main__:100] Shell: ('pm', 'install', '-r', '-t', '/data/local/tmp/app-uiautomator.apk')15.[Kapp-uiautomator-test.apk |################################| 966.8K / 966.8K16.[?25h[D 190716 23:35:11 __main__:157] Push https:///openatx/android-uiautomator-server/releases/download/1.1.7/app-uiautomator-test.apk -> /data/local/tmp/app-uiautomator-test.apk:064417.[D 190716 23:35:11 __main__:100] Shell: ('pm', 'install', '-r', '-t', '/data/local/tmp/app-uiautomator-test.apk')18.[I 190716 23:35:18 __main__:193] Install atx-agent19.[Katx-agent_0.6.0_linux_386.tar.gz |################################| 4.0M / 4.0M.0M20.[?25h[D 190716 23:35:23 __main__:157] Push https:///openatx/atx-agent/releases/download/0.6.0/atx-agent_0.6.0_linux_386.tar.gz -> /data/local/tmp/atx-agent:075521.[D 190716 23:35:26 __main__:100] Shell: ('/data/local/tmp/atx-agent', 'server', '--stop')22.[D 190716 23:35:26 __main__:100] Shell: ('/data/local/tmp/atx-agent', 'server', '-d')23.[I 190716 23:35:26 __main__:202] Check install24.[D 190716 23:35:26 __main__:212] Forward: local:tcp:53461 -> remote:tcp:791225.[D 190716 23:35:28 __main__:214] atx-agent version 0.6.026.Successfully init AdbDevice(serial=emulator-5554)看到Successfully就是安装成功了(当然总是有⼏个⼩伙伴的⼿机需要换下了)连接⼿机python-uiautomator2连接⼿机的⽅式有两种,⼀种是通过WIFI,另外⼀种是通过USB⾸先查看uiautomator状态是启动状态b连接⼿机先使⽤adb devices获取⼿机的唯⼀识别序列号,也就是devices前⾯的那⼀串:emulator-5554E:\python36\Scripts>adb devicesList of devices attachedemulator-5554 device测试是否连接成功,先打开你的⼿机上的任意app,⽐如淘宝,cmd输⼊以下信息1.E:\python36\Scripts>python2.Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)] on win323.Type "help", "copyright", "credits" or "license" for more information.4.>>> import uiautomator2 as u25.>>> d = u2.connect_usb('emulator-5554')6.>>> 7.{'currentPackageName': 'com.taobao.taobao', 'displayHeight': 1280, 'displayRotation': 0, 'displaySizeDpX': 360,8.'displaySizeDpY': 640, 'displayWidth': 720, 'productName': 'h60-l01', 'screenOn': True, 'sdkInt': 22, 'naturalOrientation': True}9.>>>看到输出’currentPackageName’: ‘com.taobao.taobao’说明连接成功了2.wifi连接⾸先保证⼿机和电脑在⼀个局域⽹,可以先ping ⼿机ip,看能不能ping的通1.>>> import uiautomator2 as u22.>>> d = u2.connect('192.168.1.xx')3.>>> weditor环境准备pip install —pre weditor创建桌⾯快捷图标python -m weditor —shortcut创建完成后,桌⾯会出现⼀个WEditor快捷图标,双击就能启动了也可以不创建图标,⽤命令⾏启动python -m weditor看到窗⼝出现如下信息,就是启动成功了(窗⼝别关掉了)1.C:\Users\dell>python -m weditor2.listening on http://192.168.1.125:173103.[I 190717 23:50:55 web:2246] 304 GET / (::1) 7.98ms4.[I 190717 23:50:55 web:2246] 304 GET /static/libs/css/buttons.css (::1) 196.47ms5.[I 190717 23:50:55 web:2246] 304 GET /static/loading.svg (::1) 5.99ms6.[I 190717 23:50:55 web:2246] 304 GET /static/ace/ace.js (::1) 12.97ms7.[I 190717 23:50:55 web:2246] 304 GET /static/running.svg (::1) 13.96ms8.[I 190717 23:50:55 web:2246] 304 GET /static/ace/mode-python.js (::1) 19.96ms9.[I 190717 23:50:55 web:2246] 304 GET /static/libs/fontawesome/css/font-awesome.min.css (::1) 1.99ms10.[I 190717 23:50:59 web:2246] 304 GET /api/v1/version (::1) 0.00msweditor连接⼿机先使⽤adb连上⼿机,输⼊adb devices查看⼿机设备号:emulator-55541.C:\Users\dell>adb devices2.List of devices attached3.adb server version (31) doesn't match this client (40); killing...4.* daemon started successfully5.emulator-5554 device在页⾯上输⼊⼿机设备号,点Connet按钮,看到出现⼀个⼩草的图标,就是连接成功了页⾯元素抓取定位元素定位元素的⽅法⽀持uiautomator的定位⽅法,也可以⽀持xpath和坐标定位1.可以查看元素的resourceId属性2.⾃动⽣成xpath定位⽅法3.⽀持坐标点击,根据屏幕的⽐例4.⾃动⽣成uiautomator定位⽅法参考代码5.可以勾选强制使⽤xpath在线Coding调试可以在页⾯的右边调试运⾏代码,这点⽐appium强很多,可以编写代码边调试,还是⾮常⽅便的操作步骤:点勾选⾼铁动车后,点查询按钮1.d(resourceId="com.yipiao:id/checkGaotie").click()2.d.xpath('//*[@resource-id="com.yipiao:id/layQueryCard"]/android.widget.FrameLayout[1]').click()Ctr+Enter运⾏代码,会发现⼿机上已经点击成功⽀持wifi连接⾸先保证电脑和⼿机wifi在⼀个局域⽹,电脑上能ping的通⼿机的ip,输⼊⼿机的ip也可以抓到⼿机上的页⾯元素看完上⾯的⽂章再加上⽂章开头的api⽂档相信基本使⽤应该没问题了,下⾯呢,我写⼀个⽤uiautomator2去⽀付宝收集能量的⼀个脚本哈:脚本如下:1.# coding:utf-82.import uiautomator2 as u23.d = u2.connect_usb('740dc3d1')4.print('打开⽀付宝')5.d.app_start('com.eg.android.AlipayGphone')6.print('点击蚂蚁森林')7.d.xpath('//*[@text="蚂蚁森林"]').click()8.n = d(descriptionContains='收集').count9.for i in range(n):10.d.xpath('//*[contains(@content-desc,"收集能量")]').click()11.print('收集能量成功')12.print('收集能量结束!')怎么样?只要将这个脚本设置未定时任务就可以⾃⼰每天定时去收取能量了,这样你的⼩树才会长得快呀!总体来说呢,uiautomator2⽐appium安装搭建环境要简单⼀点,代码呢也⼗分简洁!其次就是这个weditor 也⽐appium查看页⾯元素要⽅便,反应快,可实时调代码这是关键!期待后⾯的⾃动化项⽬可以⽤uiautomaor2 来试试⼿,届时会继续更新uiautomator2的详细使⽤,及踩坑的记录!———————————————————————————。

Android自动化框架uiautomator简介

Android⾃动化框架uiautomator简介UI⾃动化测试框架,安卓移动端APP.要求:Android 4.3以上1.提供⼀系列API:执⾏UI测试在系统或者第三⽅APP上⾯;2.允许在被测设备上执⾏操作,⽐如打开系统设置菜单。

3.适合编写⿊盒⾃动化测试UIautomator框架主要特点:1.元素定位:UIautomator viewer。

扫描、分析待测应⽤的UI组件的图像⼯具;2.元素操作:Accessing devicestate.在⽬标设备和app上的各种操作3.元素识别:UI Automator APIs,在多个应⽤程序中捕获和操作UI组件。

1.uiautomatorvieweruiautomatorviewer位于sdk/tools⽬录下,可以扫描、分析待测试应⽤界⾯,分析结果可以导出为xml与截图。

通过该⼯具可以分析出UI控件的id,text,focusable等等各种属性,甚⾄布局上的层次关系。

windows下运⾏tools下的uiautomatorviewer.batliunx下运⾏./uiautomatorviewer 启动该⼯具。

上图uiautomatorviewer的运⾏截图,左上⾓两个⼿机模样的图标点击后就会开始截图并分析UI组件,分析后的结果如下⽅所⽰,左侧为⼿机当前画⾯截图,右侧上部为view控件的层次关系,下部为当前选中控件的各种信息。

2.uiautomator APIsuiautomator是⼀个包含⼀套UI测试API,和⽀持运⾏测试程序的JAR包。

该JAR包位于sdk/platforms/android-* /uiautomator.jar. 使⽤时需要注意⾃⼰的SDK版本需要⼤于16, SDK Tools版本需要⼤于21.Android版本需要⾼于4.3。

UIautomator有⽐较多的类。

这⾥只介绍我们在APP⾃动化测试中常⽤的三种。

其中UiSelector类是在appium定位元素时会⽤到的类。

Android自动化测试(UiAutomator)简要介绍

Android自动化测试(UiAutomator)简要介绍一、一个BUG引发的问题如果研发过程中有一个BUG:“不断的切换手机语言出现花屏现象”。

这个问题我们如何验证呢?我想,最好的方式应该是自动化测试。

那么,自动化测试可以完成哪些任务呢?简单的说,那些重复性的测试工作,都可以交给自动化完成:1、设置手机的语言2、添加、删除、收藏联系人3、拨号、挂断4、甚至发送短信、收藏短信如果需要上面的功能,那么就开始自动化之旅吧。

二、Android自动化测试简单介绍Android自动化测试主要分为Monkeyrunner、Rubotium、UiAutomator、Monkey(在我看来这个不算)等。

主要特点:1、Monkeyrunner:优点:操作最为简单,可以录制测试脚本,可视化操作;缺点:主要生成坐标的自动化操作,移植性不强,功能最为局限;2、Rubotium:主要针对某一个APK进行自动化测试,APK可以有源码,也可以没有源码,功能强大;缺点是针对APK操作,而且需要对APK重新签名(有工具),因此操作相对复杂;3、UiAutomator:优点:可以对所有操作进行自动化,操作简单;缺点:Android版本需要高于4.0,无法根据控件ID操作,相对来说功能较为局限,但也够用了;4、Monkey:准确来说,这不算是自动化测试,因为其只能产生随机的事件,无法按照既定的步骤操作;由上面介绍可以有这样的结论:测试某个APK,可以选择Rubotium;测试过程可能涉及多个APK,选择UiAutomator;一些简单的测试,选择Monkeyrunner;本文主要介绍UiAutomator的使用方法。

三、环境搭建3.1、必备条件:1、JDK2、SDK(API高于15)3、Eclipse(安装ADT插件)4、ANT(用于编译生成jar)3.2、简要步骤:1、安装JDK并添加环境变量。

安装后,一定要通过JAVA_HOME的方式添加环境变量,即先建立JAVA_HOME 变量,然后在path中添加%JAVA_HOME%\bin;2、添加SDK环境变量。

androiduiautomationpoco参数

androiduiautomationpoco参数POCO(Powerful GUI Object Control)是一款基于Android平台开发的自动化测试工具,用于对Android应用程序进行UI自动化测试。

它提供了一些参数用于集成到Android自动化测试框架中,以便进行更精确和高效的测试。

以下是一些常用的POCO参数:1. findAndFocus:此参数用于查找并将焦点聚集在指定的UI元素上。

它接受一个字符串作为参数,该字符串描述了要查找的UI元素的层次结构。

例如,"android.widget.Button#button1"表示查找名为“button1”的Button控件。

2. selectedItem:当在列表控件中选择一个项目时,可以使用此参数指定要选择的项目的位置。

例如,"1"表示选择列表中的第一个项目。

4. ignoreHiddenView:此参数用于指定是否忽略隐藏的UI元素。

默认情况下,POCO会尝试查找所有可见的UI元素。

设置为true时,POCO将只查找可见的UI元素。

5. threshold:此参数用于设置POCO在查找模糊匹配的UI元素时的匹配度。

它接受一个[0, 1]之间的浮点数作为参数,表示匹配度的阈值。

默认情况下,阈值为0.76. scrollableParent:当需要在可滚动的容器中查找UI元素时,可以使用此参数指定可滚动的父级元素的层次结构描述。

例如,"android.widget.ListView#listView"表示查找名为“listView”的ListView控件作为可滚动的父级元素。

7. index:此参数用于指定在找到多个匹配的UI元素时要选择的元素的索引位置。

例如,设置index为0将选择匹配到的第一个元素。

8. regex:此参数用于指定查找UI元素时使用的正则表达式。

它接受一个字符串作为参数,可以包含正则表达式的模式。

Android自动化-UiAutomator

JAVA_HOME、PATH环境变量 3. 启动SDK Manager.exe,下载Android SDK,最
好从国内镜象去下载
SDK Manager.exe
SDK Manager配置国内镜象
SDK Manager.exe菜单: Tools->Options
Eclipse中初始化Java工程
1. 创建Java工程 2. 将 A n d r o i d S D K 目 录 中 的
System.out.println("test"); } }
测试代码片断-测试主方法
编译并执行测试用例
set ANDROID_HOME=D:\android_sdk set JAVA_HOME=F:\tools\jdk1.7.0_67 set ANT_HOME=F:\tools\apache-ant-1.8.0 set path=%path%;%JAVA_HOME%\bin;%ANT_HOME%\bin;%ANDROID_HOME%\tools;%ANDROID_HOME%\platformtools call android create uitest-project -n uitest -t "android-18" -p D:\workspace\uitest call ant -f D:\workspace\uitest\build.xml build adb push D:\workspace\uitest\bin\uitest.jar /data/local/tmp adb shell uiautomator runtest uitest.jar -c cn.muchinfo.mtp.UITest2
• 这些环境都可以用其它人己经下载好了的,直接copy过来就可以用了,没必要 自己重新去下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档