MIUI 5支持android UI android 蓝牙测试工具具uiautomator吗

用android uiautomator做自动化测试,怎么连接真机进行_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
用android uiautomator做自动化测试,怎么连接真机进行
我有更好的答案
FileOutputStream&import&java.androidGoogle在sdk4;&&&&&&public&File&fout&=&nbsp;要想实现的好,最好有开发配合;java项目编译为jar后需要push到手机才能运行;&public&&nbsp./zhidao/wh%3D600%2C800/sign=126f76f8fae0e909b7a488fa/e6a7ef1fba2813fbfaaf51f3de6663;&class&TAppWorkAssistV1&&extends&&&&&&&&&&&&//&初始化日志文件&&&&&&&&if&(E;&nbsp.graphics.Bitmap&,也就是说必须打印日志暴力调试。&Appium基于Android InstrumentationFramework和UIAutomator,也就是说这个工具是可以跨应用的。说远了,好吧;null&nbsp.uiautomator.equals(Environment.MEDIA_MOUNTED&nbsp.Rect&nbsp.io.IOEpublic&nbsp://b;getExternalStorageState&();import&com.android.uiautomator.testrunner,为了帮大家更容易理解appium的使用.util.EncodingUtils&nbsp.core.&UiSelector&;&nbsp.BitmapFactory&;&nbsp://b;import&com.android.uiautomator.UiAutomatorTestCase&{&com.io.FileOutputS&nbsp. &这里的android-16需要和之前的android,我这里就讲一下uiautomator的使用方法;&nbsp.jar和import&&null& String sLog=&&&&.bat就对应于hierarchyviewer.bat,用来查看程序的ui界面的;android。你应该有android-sdk吧;&import&android.)){&write2file(String filename,String sData)&&&&& {&&nbsp,升级到4.0以上,进入目录android-sdk\tools,你会看到两个文件;&nbsp.jpg" esrc="http.0以后提供了一个自动化解决方案uiautomator:优点:可以跨应用了;这可是亲生的;缺点:必须sdk4.android.io.File.0以上版本,是java project不是android project,添加引用;&nbsp,通常也是使用管理员权限启动的。好了,现在用eclipse创建一个java project:traceview.bat 和 uiautomatorviewer.bat,这俩文件让你想起了monkeyrunner了吧,是的;&import&&;import&import&android.com.jar位置相一致。然后呢;;import&nbsp.os.Eimport&nbsp./zhidao/wh%3D450%2C600/sign=059ed1ea158/e6a7ef1fba2813fbfaaf51f3de6663.UiSimport&nbsp,是的,你没看错;import&com.android.uiautomator.&;&com?写代码吧,建立一个类,得,发个给大家参考:package&outStream&=&&&&&&nbsp.jpg" />在project.properties中内容为;&&&nbsp.apache.public&&void&nbsp:<img class="ikqb_img" src="http.uia.core.UiO&&&&&&public&String&sLog&;&nbsp.android.&nbsp.UiAutomatorTestC&nbsp,traceview:# Project target.target=&android-16&nbsp
资深电脑人
为您推荐:
其他类似问题
自动化测试的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;相关文章推荐
1、找到uiautomatorviewer.bat文件,我的是在:C:\Users\Administrator\AppData\Local\Android\sdk\tools\bin文件下,双击打开即...
1 Eclipse新建Java Project test01
2 添加JUnit库
UIAutomator快速上手
一、eclipse新建一个java项目
1、用adt-bundle的eclipse新建一个java项目:UIAutomatorDemo
2、eclipse中选中...
本文英文原文 /tools/testing/testing_ui.html
已把其翻译为中文,希望各位多多了解uiautomator 安卓自...
Android测试工具中,Monkey Runner只要简单几个指令即可,但他的局限性在于都是基于像素位置操作,不具备移植性。
而采用uiautomator编写的自动化测试工具则可以实现基于UiSe...
uiautomator2.0+脱离PC运行(apk启动uiautomator2.0+)效果:打开MyTest.apk,点击run uiautomator,就能直接运行你的脚本。方案概述:
新建一个An...
UiAutomator2自动化测试
转自:/?p=504
在Android 4.1发布的时候包含了一种新的测试工具–uiautomator,uiautomat...
他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)Android自动化框架常用的有很多,本身也提供了很多自动化测试框架,每个都有其优势和不足 。当然对于我们做UI自动化测试来说,简单易用即可。
UiAutomator也是Android提供的自动化测试框架,基本上支持所有的Android事件操作,且不需要测试人员了解代码实现细节,测试人员可以用uiautomator投入viewer抓取app页面的控件属性,不需要看源码。基于java,测试代码结构相对简单,且容易上手,学习成本不高,一次编译,所有设备或模拟器都能运行测试,能跨app。当然,不足是:只支持sdk16及以上,不支持Hybird app、webapp。下面,我们来一个小例子,进行说明uiautomator的环境搭建和使用。
一、环境准备
  1. 安装JDK,必要条件。
  2. 下载sdk/adt(android所需,目前adt自带sdk和eclipse,API需要16以上),配置环境变量:先建立ANDROID_HOME,然后在path中添加%ANDROID_HOME%\
  3. 安装ANT工具,并配置环境变量:先建立ANT_HOME变量,然后在path中添加%ANT_HOME%\bin;测试是否成功,运行-ant。
  4. 安装Eclipse,并安装adt插件。
二、建立Eclipse project
  1. 打开Eclipse,new-新建java project,输入project 名 UIAutomator,点击finish。
  2.&添加Android库
  找到路径sdk\platforms\android-20下面的android.jar和uiautomator.jar,copy到project的lib下。
  把Android.jar 和uiautomator.jar build path中来。
  3. 新建第一个Demo程序
  代码中,写入&getUiDevice().pressHome();一行代码进行测试。
  4. 查看sdk ID
  cmd进入sdk\tools\ 目录下,运行命令:android list,查看API 大于15的SDK的ID值,及当前已安装Android版本,当前是1
  5. 生成bulid文件
  在\sdk\tools\目录下,运行命令:android create uitest-project -n &name& -t &android-sdk-ID& -p &path&
  其中name为将来生成的jar包的名字,可以自己定义,android-sdk-ID为上一步骤看到的1,path是project的路径名称,android create uitest-project -n first -t 1&-p&E:\workspace\UIAutomator
  运行命令后,将会在工程的根目录下生成build.xml文件
  6.编译生成jar
  cmd进入项目的project目录,然后运行ant build,使用ant编译生成jar,执行如下:
  在bin目录下生成rar文件
  7. push并运行jar
  adb push &jar文件路径& data/local/tmp
实际执行命令为:adb push E:\workspace\UIAutomator\bin\first.jar&data/local/tmp
  8. 运行jar文件
  adb shell uiautomator runtest &jar文件名& -c &包名.类名&
  实际运行命令为:adb shell uiautomator runtest first.jar&-c com.iu.android.TestPage.TestDemoOne(注意不要写错包名和类名),可以看到手机会按照Runner中的步骤自动执行。
阅读(...) 评论()相关文章推荐
一、UiScrollable简介
1、UiScrollable是UiCollection的子类。
2、UiScrollable专门处理滚动时间,提供各种滚动方法。
常用功能有:向前滚动、向后滚动、快速...
转:http://blog.csdn.net/itfootball/article/details/
UiScrollable继承UiCollection...
讲解了Android UiAutomator UiScrollable类,并附上实例
一、自动化测试的必要性
Android程序开发迭代周期短,测试case重复度高,大部分case属于功能验证,常规的测试方法是测试人员按照预先写好的Case手顺进行测试,人工比对操作结果和预期结果。这...
Google在sdk4.0以后提供了一个自动化解决方案uiautomator:
优点:可以跨应用了;这可是亲生的;
缺点:必须sdk4.0以上版本;要想实现的好,最好有开发配合;java项目编译为ja...
一、UiWatcher类说明
1、Uiwatcher用于处理脚本执行过程中遇到非预想的步骤
2、UiWatcher使用场景
  1)测试过程中来了一个电话
  2)测试过程中来...
本文主要讲解使用
以下为使用UiAutomation打开settings的一个标本实例,来简单说明使用该工具的测试步骤
package com.uia.example.
//导入需要的内容
以下为使用UiAutomation打开settings的一个标本实例,来简单说明使用该工具的测试步骤
package com.uia.example.
//导入需要的内容
昨天我尝试在Macbook上配置环境来运行uiautomator,之中遇到不少问题,最终一一解决了,在这里做个笔记。
首先当然是在Mac上配置Eclipse和Android SDK,具体可以见我之...
他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)在Android 4.1发布的时候包含了一种新的测试工具&#8211;,uiautomator是用来做UI测试的。也就是普通的手工测试,点击每个控件元素 看看输出的结果是否符合预期。比如 登陆界面 分别输入正确和错误的用户名密码然后点击登陆按钮看看是否能否登陆以及是否有错误提示等。
功能性或者黑盒UI测试不需要测试人员了解程序如何实现的,只需要验证各种操作的结果是否符合预期即可。这样的测试可以分离团队的开发人员和测试人员。大家各干各的没有太多的交集。
常用的UI测试方式就是人工验证啦,就是测试人员拿着各种手机分别安装要测试的程序然后看看是否能正确完成各种预定的功能。但是这种验证方式是非常耗时间的,每次回归都要全部验证一边,并且还容易出现人为错误。比较高效和可靠的UI测试方式就是自动化测试。自动化UI测试创建测试代码来执行测试任务,各种测试任务分别覆盖不同的使用场景,然后使用测试框架来运行这些测试任务。
uiautomator 就是你的自动化UI测试工具。
Android SDK在4.1中提供了如下工具来支持UI自动化测试:
uiautomatorviewer &#8211; 一个图形界面工具来扫描和分析应用的UI控件。
uiautomator &#8211; 一个测试的Java库,包含了创建UI测试的各种API和执行自动化测试的引擎。
要使用该工具,需要满足如下条件:
Android SDK Tools, Revision 21 or higher
Android SDK Platform, API 16 or higher
uiautomator 测试工具的工作流程
下面是uiautomator 工作流程概述:
安装要测试的应用到手机中,分析应用的UI界面元素 并确保被测试应用的各个控件可以被测试工具获取到。
创建知道测试案例来模拟应用中的用户操作步骤。
编译测试案例代码为Jar包并复制该Jar包到安装了待测应用的测试手机中。
运行测试并查看结果
修改任何发现的bug,然后修复并重新测试。
分析待测应用的UI元素
在开始编写测试案例代码之前,需要熟悉待测应用的UI元素。可以通过uiautomatorviewer 工具来获取应用的界面截图并分析。uiautomatorviewer 工具提供了一个便利的方式来查看UI布局结构,并且可以查看各个控件的相关属性。利用这些信息可以用来创建UI测试代码。
uiautomatorviewer 工具截图
分析待测应用UI界面的步骤如下:
1. 把Android手机连接到电脑上
2. 打开命令行窗口并导航到目录 /tools/
运行如下命令:$ uiautomatorviewer
windows下运行 uiautomatorviewer.bat 命令
3. 点击uiautomatorviewer 工具右上角文件夹按钮旁边的“Device Screenshot”按钮来获取当前 屏幕界面信息。
注意:如果当前电脑连接了多个设备,通过设置ANDROID_SERIAL环境变量来指定要分析的设备。步骤如下:
a.运行如下命令获取连接到电脑的设备序列号
adb devices
b.设置ANDROID_SERIAL为需要测试的设备序列号
Windows:set ANDROID_SERIAL=
Unix: export ANDROID_SERIAL=
如果电脑只连接一个设备则无需设置ANDROID_SERIAL 环境变量。
4. 查看待测应用的UI界面元素属性
把鼠标放到uiautomatorviewer工具左边的截图中的控件上来查看该控件的属性。属性显示在右侧界面下方,上方显示当前界面的布局结构。
点击右侧上方的黄三角按钮(Toggle NAF Nodes)来查看不能被uiautomator测试工具访问到的控件。这些控件只设置了有限的属性,所以导致uiautomator无法获取到这些控件。所以你可能很难测试这些控件。这种情况下你可以要求开发者为这些控件添加必要的属性,比如 如果是ImageView或者ImageButton应该添加android:contentDescription属性。
测试准备工作
在开始使用uiautomator 之前需要完成如下准备工作:
把待测应用安装到测试手机(设备)上
当你准备测试的时候,待测的应用可能还没有发布到市场上。但是你应该具有该应用的APK安装文件,你可以通过ADB工具来安装待测应用到手机中,或者通过其他工具来安装Apk。
辨别待测应用UI控件
在开始编写uiautomator测试代码之前,需要先辨别待测应用的UI控件元素。一般而言,优秀的待测应用的UI元素应该是可见的并且用户可以操作的。这些UI元素也应该具有可见的文本标签、android:contentDescription值或者二则兼具。
通过uiautomatorviewer 工具可以查看应用的可见控件。具体使用情况见上面所述。
确保待测应用是可访问的
由于uiautomator 工具依赖Android设备的可访问行来获取UI控件,所以这不是非常重要的。要支持uiautomator 工具需要一下条件:
使用android:contentDescription属性给 ImageButton, ImageView, CheckBox和其他控件设置标签。
使用android:hint 属性来标记EditText 控件,而不是使用里面的文本(文本内容用户是可以修改的)。
对于用来提供操作视觉反馈的UI(文本或者图标),都添加一个android:hint 属性来识别。
确保所有用户可操作的界面元素都可以通过方向控制键选中(例如轨迹球)。
通过uiautomatorviewer 工具来确保所有的UI元素都可以被测试工具访问到。还可以通过“辅助功能”(在设置界面)中的“TalkBack”等服务来测试UI的可访问性。
设置开发环境
如果你使用的是Eclipse(Adt),则Android SDK提供了额外的工具来帮助你编写uiautomator测试代码和打包测试项目。在Eclipse中创建uiautomator测试项目的过程如下:
创建新的Java项目(注意不是Android项目)。在该项目中来创建测试代码。
在Project Explorer视图中,右键点击测试项目,选择“ Properties & Java Build Path”,然后选择“Libraries” tab界面。在“Libraries”界面选择“ Add Library & JUnit”来添加JUnit3 库。然后点击“Add External JARs&#8230; ”并导航到Android SDK目录。选择platforms目录下面的 uiautomator.jar 和 android.jar文件。
设置好的build path如下图:
uiautomator项目类路径设置
如果你不使用Eclipse,则需要确保/platforms/目录中的uiautomator.jar 和 android.jar 位于项目Build path中。
配置好开发环境后就可以开始编写测试代码了。
创建uiautomator 测试案例
uiautomator 测试案例(Test case)需要继承至UiAutomatorTestCase 类。而UiAutomatorTestCase 类继承至junit.framework.TestCase类,所以可以用JUnit的Assert类来比较测试结果。
UI测试的首要任务就是访问测试手机。一般都是从手机的主屏开始测试的。通过uiautomator 提供的API可以从主屏来模拟用户的操作。下面会介绍具体示例。
uiautomator API
uiautomator API在 uiautomator.jar 文件中。这些API分别如下:
代表设备状态。在测试中,可以通过UiDevice实例来检测设备的各种属性,例如当前的屏幕方向以及屏幕尺寸。同时还可以通过UiDevice实例来执行设备级别的操作,例如 把设备设置为横屏或者竖屏、按下Home按键等。
如下是模拟按下Home按键的代码:
getUiDevice().pressHome();
UiSelector
代表一个搜索UI控件的条件。如果发现多个满足条件的控件则会返回第一个控件。返回的结果为UiObject对象。在构造UiSelector的时候可以组合使用多个属性来定位具体的控件。如果没有找到控件则会抛出 UiAutomatorObjectNotFoundException 异常。还可以使用childSelector()函数来嵌套UiSelector 对象。例如,下面的代码演示了如何在当前界面中查找第一个ListView中的带有文本属性为Apps的子控件。
UiObject appItem = new UiObject(new UiSelector()
.className("android.widget.ListView").instance(1)
.childSelector(new UiSelector().text("Apps")));
UiObject appItem = new UiObject(new UiSelector().className("android.widget.ListView").instance(1).childSelector(new UiSelector().text("Apps")));
代表一个UI控件。通过UiSelector来查找UiObject。
如下示例代码演示了如何查找当前显示界面中的取消按钮和确认按钮:
UiObject cancelButton = new UiObject(new UiSelector().text("Cancel"));
UiObject okButton = new UiObject(new UiSelector().text("OK"));
UiObject cancelButton = new UiObject(new UiSelector().text("Cancel"));UiObject okButton = new UiObject(new UiSelector().text("OK"));
查找到的UiObject实例可以在其他测试代码中重用。需要注意的是:每次使用UiObject做操作的时候uiautomator 都会在当前屏幕重新查找该控件。
如下代码uiautomator 工具在当前界面查找文本内容为“OK”的控件。如果存在并且可用则模拟用户点击该控件。
if(okButton.exists() && okButton.isEnabled())
okButton.click();
if(okButton.exists() && okButton.isEnabled()){okButton.click();}
还可以限制仅仅查找特定类型的控件。例如 如下代码只查找文本为“Cancel”和“OK”的android.widget.Button类型控件。
UiObject cancelButton = new UiObject(new UiSelector().text("Cancel")
.className("android.widget.Button"));
UiObject okButton = new UiObject(new UiSelector().text("OK")
.className("android.widget.Button"));
UiObject cancelButton = new UiObject(new UiSelector().text("Cancel").className("android.widget.Button"));UiObject okButton = new UiObject(new UiSelector().text("OK").className("android.widget.Button"));
UiCollection
代表控件的集合。获取UiCollection的方式和UiObject一样,通过 UiSelector查找。 UiCollection对应Android系统中的ViewGroup以及子控件。
如下代码演示如何通过UiSelector来获取包含视频集合的UiCollection。
UiCollection videos = new UiCollection(new UiSelector()
.className("android.widget.FrameLayout"));
UiCollection videos = new UiCollection(new UiSelector().className("android.widget.FrameLayout"));
如果每个视频是放到LinearLayout中的,则可以通过如下方式获取视频的数目:
int count = videos.getChildCount(new UiSelector()
.className("android.widget.LinearLayout"));
int count = videos.getChildCount(new UiSelector().className("android.widget.LinearLayout"));
如果需要查找标签为“Cute Baby Laughing”的视频,并点击。则可以通过如下方式:
UiObject video = videos.getChildByText(new UiSelector()
.className("android.widget.LinearLayout"), "Cute Baby Laughing");
video.click();
UiObject video = videos.getChildByText(new UiSelector().className("android.widget.LinearLayout"), "Cute Baby Laughing");video.click();
同样还可以模拟其他用户操作。例如,模拟选择视频的操作如下:
UiObject checkBox = video.getChild(new UiSelector()
.className("android.widget.Checkbox"));
if(!checkBox.isSelected()) checkbox.click();
UiObject checkBox = video.getChild(new UiSelector().className("android.widget.Checkbox"));if(!checkBox.isSelected()) checkbox.click();
UiScrollable
代表可滚动的控件。可以用UiScrollable来模拟水平或者垂直滚动的UI元素。如果需要操作的元素在屏幕外需要滚动屏幕才能看到的情况下需要使用UiScrollable。
例如,下面的代码显示了如何模拟滚动到“Settings ”菜单并点击“About tablet”菜单的操作。
UiScrollable settingsItem = new UiScrollable(new UiSelector()
.className("android.widget.ListView"));
UiObject about = settingsItem.getChildByText(new UiSelector()
.className("android.widget.LinearLayout"), "About tablet");
about.click()
UiScrollable settingsItem = new UiScrollable(new UiSelector().className("android.widget.ListView"));UiObject about = settingsItem.getChildByText(new UiSelector().className("android.widget.LinearLayout"), "About tablet");about.click()
其他API参考uiautomator api文档。
一个简单的uiautomator 测试案例
如下是一个简单的测试案例代码,模拟了点击Home键回到主屏,然后点击所以应用按钮打开所有应用列表,并滚动到时钟应用。打开时钟应用 并选择闹铃界面的第一个闹钟设置,修改该设置的开关。然后返回到时钟界面再进入倒计时界面。
package com.uia.example.
import android.widget.ListV
import android.widget.S
import com.android.uiautomator.core.UiO
import com.android.uiautomator.core.UiObjectNotFoundE
import com.android.uiautomator.core.UiS
import com.android.uiautomator.core.UiS
import com.android.uiautomator.testrunner.UiAutomatorTestC
public class LaunchSettings extends UiAutomatorTestCase {
// TODO 重要注意: 在运行该测试代码的时候 需要先把手机语言环境设置为英文。
public void testDemo() throws UiObjectNotFoundException {
// 模拟 HOME 键点击事件
getUiDevice().pressHome();
// 现在打开了主屏应用,模拟点击所有应用按钮操作来启动所有应用界面。
// 如果你使用了uiautomatorviewer来查看主屏,则可以发现“所有应用”按钮的
// content-description 属性为“Apps”。可以使用该属性来找到该按钮。
UiObject allAppsButton = new UiObject(new UiSelector().description("Apps"));
// 模拟点击所有应用按钮,并等待所有应用界面起来
allAppsButton.clickAndWaitForNewWindow();
// 在所有应用界面,时钟应用位于Apps tab界面中。下面模拟用户点击Apps tab操作。
// 找到 Apps tab 按钮
UiObject appsTab = new UiObject(new UiSelector().text("Apps"));
// 模拟点击 Apps tab.
appsTab.click();
// 然后在 Apps tab界面,模拟用户滑动到时钟应用的操作。
// 由于Apps界面是可以滚动的,所有用
// UiScrollable 对象.
UiScrollable appViews = new UiScrollable(new UiSelector().scrollable(true));
// 设置滚动模式为水平滚动(默认为垂直滚动)
appViews.setAsHorizontalList();
if (allAppsButton.exists() && allAppsButton.isEnabled()) {
// allAppsButton在当前界面已经不可见了 所以这里不会执行
allAppsButton.click();
// 查找时钟应用并点击
UiObject settingsApp = appViews.getChildByText(
new UiSelector().className(android.widget.TextView.class.getName()), "Clock");
settingsApp.clickAndWaitForNewWindow();
// 验证当前显示 的应用包名为时钟
UiObject settingsValidation = new UiObject(new UiSelector().packageName("com.google.android.deskclock"));
// 如果不存在则出错提示
assertTrue("Unable to detect Clock", settingsValidation.exists());
// 模拟点击时间tab
UiObject clock = new UiObject(new UiSelector().description("Clock"));
clock.clickAndWaitForNewWindow();
// 模拟点击下方的闹钟图标
UiObject alarms = new UiObject(new UiSelector().description("Alarms"));
alarms.clickAndWaitForNewWindow();
UiScrollable list = new UiScrollable(new UiSelector().className(ListView.class.getName()));
if (list.getChildCount() & 0) {
UiObject listIndex0 = list.getChild(new UiSelector().index(0));
UiObject switchBtn = listIndex0.getChild(new UiSelector().className(Switch.class.getName()));
boolean isChecked = switchBtn.isChecked();
switchBtn.click();
// 模拟点击返回键
getUiDevice().pressBack();
UiObject timer = new UiObject(new UiSelector().description("Timer"));
timer.clickAndWaitForNewWindow();
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
package com.uia.example.my;&import android.widget.ListView;import android.widget.Switch;&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 LaunchSettings extends UiAutomatorTestCase {&&&&&// TODO 重要注意: 在运行该测试代码的时候 需要先把手机语言环境设置为英文。&&&&public void testDemo() throws UiObjectNotFoundException {&&&&&&&&&// 模拟 HOME 键点击事件&&&&&&&&getUiDevice().pressHome();&&&&&&&&&// 现在打开了主屏应用,模拟点击所有应用按钮操作来启动所有应用界面。&&&&&&&&// 如果你使用了uiautomatorviewer来查看主屏,则可以发现“所有应用”按钮的&&&&&&&&// content-description 属性为“Apps”。可以使用该属性来找到该按钮。&&&&&&&&UiObject allAppsButton = new UiObject(new UiSelector().description("Apps"));&&&&&&&&&// 模拟点击所有应用按钮,并等待所有应用界面起来&&&&&&&&allAppsButton.clickAndWaitForNewWindow();&&&&&&&&&// 在所有应用界面,时钟应用位于Apps tab界面中。下面模拟用户点击Apps tab操作。&&&&&&&&// 找到 Apps tab 按钮&&&&&&&&UiObject appsTab = new UiObject(new UiSelector().text("Apps"));&&&&&&&&&// 模拟点击 Apps tab.&&&&&&&&appsTab.click();&&&&&&&&&// 然后在 Apps tab界面,模拟用户滑动到时钟应用的操作。&&&&&&&&// 由于Apps界面是可以滚动的,所有用&&&&&&&&// UiScrollable 对象.&&&&&&&&UiScrollable appViews = new UiScrollable(new UiSelector().scrollable(true));&&&&&&&&&// 设置滚动模式为水平滚动(默认为垂直滚动)&&&&&&&&appViews.setAsHorizontalList();&&&&&&&&&if (allAppsButton.exists() && allAppsButton.isEnabled()) {&&&&&&&&&&&&// allAppsButton在当前界面已经不可见了 所以这里不会执行&&&&&&&&&&&&allAppsButton.click();&&&&&&&&}&&&&&&&&// 查找时钟应用并点击&&&&&&&&UiObject settingsApp = appViews.getChildByText(&&&&&&&&&&&&&&&&new UiSelector().className(android.widget.TextView.class.getName()), "Clock");&&&&&&&&settingsApp.clickAndWaitForNewWindow();&&&&&&&&&// 验证当前显示 的应用包名为时钟&&&&&&&&&UiObject settingsValidation = new UiObject(new UiSelector().packageName("com.google.android.deskclock"));&&&&&&&&// 如果不存在则出错提示&&&&&&&&assertTrue("Unable to detect Clock", settingsValidation.exists());&&&&&&&&&// 模拟点击时间tab&&&&&&&&UiObject clock = new UiObject(new UiSelector().description("Clock"));&&&&&&&&clock.clickAndWaitForNewWindow();&&&&&&&&// 模拟点击下方的闹钟图标&&&&&&&&UiObject alarms = new UiObject(new UiSelector().description("Alarms"));&&&&&&&&alarms.clickAndWaitForNewWindow();&&&&&&&&&UiScrollable list = new UiScrollable(new UiSelector().className(ListView.class.getName()));&&&&&&&&if (list.getChildCount() & 0) {&&&&&&&&&&&&UiObject listIndex0 = list.getChild(new UiSelector().index(0));&&&&&&&&&&&&UiObject switchBtn = listIndex0.getChild(new UiSelector().className(Switch.class.getName()));&&&&&&&&&&&&&boolean isChecked = switchBtn.isChecked();&&&&&&&&&&&&&switchBtn.click();&&&&&&&&}&&&&&&&&// 模拟点击返回键&&&&&&&&getUiDevice().pressBack();&&&&&&&&&UiObject timer = new UiObject(new UiSelector().description("Timer"));&&&&&&&&timer.clickAndWaitForNewWindow();&&&&&}}
打包测试代码并在测试机上运行
如下步骤打包测试代码并在测试机运行的步骤:
1.创建打包测试代码的Build脚本。通过如下命令来生成Build脚本:
&android-sdk&/tools/android create uitest-project -n &name& -t 1 -p &path&
&android-sdk&/tools/android create uitest-project -n &name& -t 1 -p &path&
&name&&span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, font-size: 13 line-height: 19"&是包含测试代码的项目名称,&path&是包含测试代码的项目文件路径。-t后面的1是Android sdk版本id。&/span&
&name&&span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, font-size: 13 line-height: 19"&是包含测试代码的项目名称,&path&是包含测试代码的项目文件路径。-t后面的1是Android sdk版本id。&/span&
注意: 在创建Build脚本之前,已经创建好了测试项目并编写好了测试代码。只不过该测试项目还没有包含打包脚本所以无法打包运行。在创建Build脚本的时候,&name&属性就是测试项目的名称、&path&就是已经创建的测试项目在电脑中的文件夹路径。 如果电脑上安装了多个版本的Android sdk,则需要运行/tools/android list target 来查看每个SDK的id。选择4.1以上的id即可。
2. 设置ANDROID_HOME 环境变量。
Windows:set ANDROID_HOME=
Unix:export ANDROID_HOME=
3. 打开命令行创建,导航到第一步中的目录中,运行 ant build 来打包。
4. 通过adb push命令把上一步打包出来的jar文件复制到测试手机中。
adb push &path&/bin/&name&.jar /data/local/tmp/
类似如下代码:
adb push ~/dev/workspace/LaunchSettings/bin/LaunchSettings.jar /data/local/tmp/
运行uiautomator 测试
下面是运行 LaunchSettings.jar jar包中测试代码的命令。测试代码位于com.uia.example.my包中。
adb shell uiautomator runtest LaunchSettings.jar -c com.uia.example.my.LaunchSettings
关于uiautomator 的更多信息参考这里:
下面是一些使用uiautomator 做UI测试的最佳实践
在待测应用可能运行的尽可能多的设备上跑uiautomator 测试。例如 在不同的屏幕密度、不同的屏幕尺寸上运行测试。
还应该在一些常规场景下测试UI,例如 电话打入情况、网络连接断开的情况等。
本文出自 云在千峰,转载时请注明出处及相应链接。本文永久链接: /?p=504
&#404;回顶部

我要回帖

更多关于 android uiautomator2 的文章

 

随机推荐