博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android官方的uiautomator例子的实现
阅读量:5740 次
发布时间:2019-06-18

本文共 4211 字,大约阅读时间需要 14 分钟。

hot3.png

Android的自动化测试有很多框架,其中uiautomator是google官方提供的黑盒UI相关的自动化测试工具,case使用java写,今天实践了一下中样例程序,其中还是有一些小问题需要总结一下的。

1、使用ADT创建一个java的项目

    在创建项目的时候要加上JUnit与你使用的Android platforms中对应的android.jar与uiautomator.jar

2、新建一个包(我这里就只叫com)

3、再这个包下创建一个class,输入以下java代码,代码全是官方文档上的代码,除了最上面的package

package com;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 Runer extends UiAutomatorTestCase {      public void testDemo() throws UiObjectNotFoundException {               // Simulate a short press on the HOME button.      getUiDevice().pressHome();            // We’re now in the home screen. Next, we want to simulate       // a user bringing up the All Apps screen.      // If you use the uiautomatorviewer tool to capture a snapshot       // of the Home screen, notice that the All Apps button’s       // content-description property has the value “Apps”.  We can       // use this property to create a UiSelector to find the button.       UiObject allAppsButton = new UiObject(new UiSelector()         .description("Apps"));            // Simulate a click to bring up the All Apps screen.      allAppsButton.clickAndWaitForNewWindow();            // In the All Apps screen, the Settings app is located in       // the Apps tab. To simulate the user bringing up the Apps tab,      // we create a UiSelector to find a tab with the text       // label “Apps”.      UiObject appsTab = new UiObject(new UiSelector()         .text("Apps"));            // Simulate a click to enter the Apps tab.      appsTab.click();      // Next, in the apps tabs, we can simulate a user swiping until      // they come to the Settings app icon.  Since the container view       // is scrollable, we can use a UiScrollable object.      UiScrollable appViews = new UiScrollable(new UiSelector()         .scrollable(true));            // Set the swiping mode to horizontal (the default is vertical)      appViews.setAsHorizontalList();            // Create a UiSelector to find the Settings app and simulate            // a user click to launch the app.       UiObject settingsApp = appViews.getChildByText(new UiSelector()         .className(android.widget.TextView.class.getName()),          "Settings");      settingsApp.clickAndWaitForNewWindow();            // Validate that the package name is the expected one      UiObject settingsValidation = new UiObject(new UiSelector()         .packageName("com.android.settings"));      assertTrue("Unable to detect Settings",          settingsValidation.exists());        UiObject reportBug = new UiObject(new UiSelector().text("Sound"));      reportBug.clickAndWaitForNewWindow();      UiObject soundValidation = new UiObject(new UiSelector()      .text("Volumes"));   assertTrue("Unable to detect Sound", 		   soundValidation.exists());              getUiDevice().pressHome();        }   }

3、使用ant工具生成build.xml

    我这里在使用ADT自已的ant插件时提示

build.xml:26: Class not found: javac1.8
网上查了查,是插件与我java环境不符,下载最新的ant插件就可以了
 
下载这个tar.gz包,解压,然后将apache-ant-1.9.4\bin目录添加到环境变量PATH中
然后cmd到android sdk的tools目录,使用andrlid list命令,记住你将要在模拟器中运行的(也是你刚刚导入android.jar与uiautomator.jar包时所在的platforms)
 
在cmd下使用
android create uitest-project -n 
-t
-p
-n 为生成的jar包名称,自已任意定义,
-t 为上面查看到的值,我这里是1
-p 为输出路径,这里就是刚才创建的java项目所在的路径
android create uitest-project -n AutoRunner -t 1 -p D:\myAndroidStudy\androidTest
然后再cmd进入D:\myAndroidStudy\androidTest,使用ant build命令生成AutoRunner.jar文件
4、将这个AutoRunner.jar文件push到模拟器中
adb push AutoRunner.jar /data/local/tmp
5、使用adb shell uiautomator runtest AutoRunner.jar –c com.Runer 使Runer类运行
 
 
我的代码里又在官方基础上多了一个点击”sound”的操作与点击Home键操作
UiObject reportBug = new UiObject(new UiSelector().text("Sound"));      reportBug.clickAndWaitForNewWindow();      UiObject soundValidation = new UiObject(new UiSelector()      .text("Volumes"));   assertTrue("Unable to detect Sound", 		   soundValidation.exists());              getUiDevice().pressHome();
 
这个其实也只是一个简单的玩具代码,没有什么意义,但是官方作为一个引导,其中也使用了一些最常见的接口。以后再深入的学习uiautomator

转载于:https://my.oschina.net/yangyanxing/blog/361769

你可能感兴趣的文章
MYSQL ORDER BY 两个字段
查看>>
将博客搬至CSDN
查看>>
Spring Cloud 2.x系列之springboot集成quartz
查看>>
图的理解:基本概念
查看>>
Windows 10无法使用debug的解决方案
查看>>
Java集合框架学习总结
查看>>
[二] JavaIO之File FileSystem WinNTFileSystem简介
查看>>
ior和mdtest测试工具安装和使用
查看>>
分析优酷2016.04最新视频加密算法
查看>>
(转)mac 清理xcode
查看>>
Android开发冷启动解决方案 实现秒开
查看>>
JDK 11 是发布了,但收费吗?
查看>>
git 常用命令
查看>>
html5文件上传断点续传
查看>>
面试java基础(真的很实用,点个赞呗!)
查看>>
Mysql索引原理及SQL优化
查看>>
利用Asp.Net Core的MiddleWare思想处理复杂业务流程
查看>>
Ghost 2.16.1 发布,基于 Markdown 的在线写作平台
查看>>
Node-Sass安装问题解决
查看>>
为什么说Kafka使用磁盘比内存快
查看>>