http://www.cnblogs.com/by-dream/p/4996000.html  上面是别人的写法

我自己的写法:

package qq.test;

import android.content.Context;
import android.content.Intent;
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.SdkSuppress;
import android.support.test.runner.AndroidJUnit4;
import android.support.test.uiautomator.By;
import android.support.test.uiautomator.UiDevice;
import android.support.test.uiautomator.Until; import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith; import static org.hamcrest.core.IsNull.notNullValue;
import static org.junit.Assert.assertThat; /**
* Instrumentation test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
* http://blog.sina.com.cn/s/blog_51335a0001017x8v.html see LargeTest
* http://blog.csdn.net/zr940326/article/details/51586789
*/ @RunWith(AndroidJUnit4.class)
@SdkSuppress(minSdkVersion = 18)
public class ChangeTextBehaviorTest { private static final String BASIC_SAMPLE_PACKAGE
= "com.android.music";
private static final int LAUNCH_TIMEOUT = 5000;
private static final String STRING_TO_BE_TYPED = "UiAutomator";
private UiDevice mDevice;
UiautomatorAssistant uiautomatorAssistant ; @BeforeClass
public static void testBeforeClass()
{
System.out.println("Public Static void testBeforeClass");
} @Before
public void startMainActivityFromHomeScreen() throws Exception
{
// Intialize UiDevice instance your android device
mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); // start from the home screen // press the home key
mDevice.pressHome(); // wait for launcher
final String launcherPackage = mDevice.getLauncherPackageName();
assertThat(launcherPackage,notNullValue());
// wait for the music can see in the screen
mDevice.wait(Until.hasObject(By.pkg(launcherPackage).depth(0)),
LAUNCH_TIMEOUT); // launch the app
Context context = InstrumentationRegistry.getContext();
final Intent intent = context.getPackageManager()
.getLaunchIntentForPackage(BASIC_SAMPLE_PACKAGE);
// Clear out any previous instances
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(intent); // Wait for the app to appear
mDevice.wait(Until.hasObject(By.pkg(BASIC_SAMPLE_PACKAGE).depth(0)),
LAUNCH_TIMEOUT);
} @Test
public void PictureTest() throws Exception
{
/*
UiObject musicTabButton = mDevice.findObject(new UiSelector()
.resourceId("com.android.music:id/songtab"));
if(!musicTabButton.isSelected() && musicTabButton.exists() && musicTabButton.isEnabled())
musicTabButton.click(); UiCollection musicList = new UiCollection(new UiSelector()
.className("android.widget.RelativeLayout"));
UiObject music = musicList.getChild(new UiSelector()
.index(3));
if(!music.isSelected()) music.click();
*/
uiautomatorAssistant = new UiautomatorAssistant(mDevice);
uiautomatorAssistant.ClickById("com.android.music:id/songtab");
uiautomatorAssistant.ClickByCollCLASS("android.widget.RelativeLayout","com.android.music:id/line1","3");
} @After
public void tearDown() throws Exception {
}
} /*
@RunWith(AndroidJUnit4.class)
@SdkSuppress(minSdkVersion = 18)
public class ChangeTextBehaviorTest { private static final String BASIC_SAMPLE_PACKAGE
= "com.android.music";
private static final int LAUNCH_TIMEOUT = 5000;
private static final String STRING_TO_BE_TYPED = "UiAutomator";
private UiDevice mDevice; public void startMainActivityFromHomeScreen() {
// Initialize UiDevice instance
mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); // Start from the home screen
mDevice.pressHome(); // Wait for launcher
final String launcherPackage = mDevice.getLauncherPackageName();
assertThat(launcherPackage, notNullValue());
mDevice.wait(Until.hasObject(By.pkg(launcherPackage).depth(0)),
LAUNCH_TIMEOUT); // Launch the app
Context context = InstrumentationRegistry.getContext();
final Intent intent = context.getPackageManager()
.getLaunchIntentForPackage(BASIC_SAMPLE_PACKAGE);
// Clear out any previous instances
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(intent); // Wait for the app to appear
mDevice.wait(Until.hasObject(By.pkg(BASIC_SAMPLE_PACKAGE).depth(0)),
LAUNCH_TIMEOUT);
}
@Test
public void testMusic(){
startMainActivityFromHomeScreen();
} }
*/

 

封装代码类:

package qq.test;

import android.support.test.uiautomator.UiCollection;
import android.support.test.uiautomator.UiDevice;
import android.support.test.uiautomator.UiObject;
import android.support.test.uiautomator.UiObjectNotFoundException;
import android.support.test.uiautomator.UiSelector; /**
* Created by Administrator on 2017/5/11.
*/ public class UiautomatorAssistant {
UiDevice mdevice;
public String m_logpathString = "/mnt/sdcard/PerformanceLog.txt"; final static int CLICK_ID = 1000;
final static int CLICK_TEXT = 1001;
final static int CLICK_CLASS = 1002;
UiautomatorAssistant(UiDevice device)
{
mdevice = device;
}// struct function
public boolean ClickById(String id)
{
return ClickByInfo(CLICK_ID, id);
}
public boolean ClickByText(String text)
{
return ClickByInfo(CLICK_TEXT, text);
}
public boolean ClickByCollCLASS(String classname,String id,String text)
{
return ClickByCollInfo(CLICK_CLASS,classname,id,text);
}
private boolean ClickByCollInfo(int CLICK, String classname, String id, String text) { UiSelector uiselector = null;
UiCollection musicList = null;
switch (CLICK)
{
case CLICK_CLASS:
musicList = new UiCollection(new UiSelector().className(classname));
uiselector = new UiSelector().resourceId(id).text(text);
break;
default:
return false;
}
UiObject uiobject = null;
try {
uiobject = musicList.getChild(uiselector);
} catch (UiObjectNotFoundException e) {
e.printStackTrace();
}
int i = 0;
if(!uiobject.exists()) return false;
try {
uiobject.click();
} catch (UiObjectNotFoundException e) {
e.printStackTrace();
}
return true;
} private boolean ClickByInfo(int CLICK, String str)
{
UiSelector uiselector = null;
switch (CLICK)
{
case CLICK_ID:
uiselector = new UiSelector().resourceId(str);
break;
case CLICK_TEXT:
uiselector = new UiSelector().text(str);
break;
default:
return false;
}
// UiObject uiobject = new UiObject(uiselector);
UiObject uiobject = mdevice.findObject(uiselector);
int i = 0;
while (!uiobject.exists() && i < 5)
{
//SolveProblems();
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
} if (i == 4) {
//TakeScreen(str + "-not-find");
return false;
}
i++;
}
try {
//UiAutomationLog("Click type:" + CLICK + "content:" + str);
uiobject.click();
} catch (UiObjectNotFoundException e) {
e.printStackTrace();
}
return true;
} }

  

Uiautomator ---(1) 封装代码的更多相关文章

  1. 七、Block 封装代码

    1.概念:封装代码块,调用的时候使用 2.声明 返回类型(^名字)(参数1,参数2..) = (参数类型 变量1,参数类型, 变量2){ }; int (^Sum)(int,int)  = ^(int ...

  2. [Effective JavaScript 笔记]第27条:使用闭包而不是字符串来封装代码

    函数是一种将代码作为数据结构存储的便利方式,代码之后可以被执行.这使得富有表现力的高阶函数抽象如map和forEach成为可能.它也是js异步I/O方法的核心.与此同时,也可以将代码表示为字符串的形式 ...

  3. python解析xml模块封装代码

    在python中解析xml文件的模块用法,以及对模块封装的方法.原文转自:http://www.jbxue.com/article/16586.html 有如下的xml文件:<?xml vers ...

  4. python网页请求urllib2模块简单封装代码

    这篇文章主要分享一个python网页请求模块urllib2模块的简单封装代码. 原文转自:http://www.jbxue.com/article/16585.html 对python网页请求模块ur ...

  5. <<海闻电子发票接口 ESB 封装 代码指示 文档>>

    <<海闻电子发票接口 ESB 封装 代码指示 文档>> isValid 是否有效标志 代码 中文 说明 true 成功 false 失败   code 海闻错误说明 代码 中文 ...

  6. Ajax--json(Ajax调用返回json封装代码、格式及注意事项)

    Ajax调用json封装代码<dbda.php>: //Ajax调用返回JSON public function JsonQuery($sql,$type=1,$db="mydb ...

  7. jdbc封装代码

    jdbc封装代码 package jdbcUtil; import java.sql.Connection; import java.sql.DriverManager; import java.sq ...

  8. (转载)Android支付宝支付封装代码

    Android支付宝支付封装代码 投稿:lijiao 字体:[增加 减小] 类型:转载 时间:2015-12-22我要评论 这篇文章主要介绍了Android支付宝支付封装代码,Android支付的时候 ...

  9. 51book机票接口对接,吐血整理(含PHP封装代码)

    前言 最近在对接51book的机票接口,遇到了挺多坑,所以整理一份作为记录 机票有两个不同的接口,一个是机票,另一个是保险 一.申请 要接51book的机票,首先是要申请账号,这时候应该是有客户经理跟 ...

随机推荐

  1. ArcServer10.1系列产品之ArcGIS Web Adaptor (IIS)

    1.关于 ArcGIS Web Adaptor 通过 ArcGIS Web Adaptor,可以将 ArcGIS for Server 与您现有的 Web 服务器进行集成.ArcGIS Web Ada ...

  2. MySQL开启skip-name-resolve和skip-networking优化

    使用skip-name-resolve增加远程连接速度 skip-name-resolve 该选项表示禁用DNS解析,属于官方一个系统上的特殊设定不管,链接的的方式是经过hosts或是IP的模式,他都 ...

  3. MVC批量上传文件(使用uploadify)

    <script src="JS/jquery-1.8.3.js"></script> <script src="uploadify/jque ...

  4. netbackup如何手动获取主机ID证书。

    如何手动获取主机ID证书.   文章:100039650 最后发布:2017-09-21 评分:  20 11 产品:NetBackup 问题 从NetBackup V8.1开始,管理员需要在证书颁发 ...

  5. [学习笔记] C++ 历年试题解析(三)--小补充

    小小的补充一下吧,因为李老师又把直招的卷子发出来了.. 题目 1.有指针变量定义及初始化int *p=new int[10];执行delete [] p;操作将结束指针变量p的生命期.(×) 解释:试 ...

  6. 手写IOC框架

    1.IOC框架的设计思路 ① 哪些类需要我们的容器进行管理 ②完成对象的别名和对应实例的映射装配 ③完成运行期对象所需要的依赖对象的依赖

  7. 二叉树、二叉搜索树、平衡二叉树、B树、B+树的精确定义和区别探究

    概述 关于树的概念很多,B树,B+树,红黑树等等. 但是你去翻翻百度百科,或者用百度或者谷歌搜索一下中文的树结构的介绍,全都是狗屁.没有哪个中文网站是真正精确解释树的定义的,尤其是百度百科. 下面我要 ...

  8. ARC中__weak;__strong;__unsafe_unretained;修饰词

    测试代码: // Human.h代码 @interface Human : NSObject @property (nonatomic, weak) Cat *pinkCat; @property ( ...

  9. 封装一个优雅的element ui表格组件

    现在做后台系统用vue + elementUI 的越来越多,那element ui的 el-table 组件肯定也离不开.虽然element ui的table组件很好.但是表格和分页是分离的.每次写表 ...

  10. PHP将unicode转utf8最简法

    最近开发时遇到Unicode编码问题,找了半天才知道PHP并没有Unicode转码函数,终于发现用一行PHP代码解决的方案: $str = '{"success":true,&qu ...