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. Windows Azure 配置Active Directory 主机(2)

    前一篇概况给大家介绍了,在云端部署一台DC 需要满足一些条件,接下来进入正题,云端VM安装域控制器具体步骤. 步骤1 :验证 主DC 的静态 IP 地址 1.登录到 Corp 网络上的 主DC. 2. ...

  2. 编写生成32位大写和小写字符的md5的函数

    package nicetime.com.practise; import java.security.MessageDigest; /** * MD5加密是JAVA应用中常见的算法,请写出两个MD5 ...

  3. Windows环境中,通过Charles工具,抓取安卓手机、苹果手机中APP应用的http、https请求包信息

    Windows环境中,通过Charles工具,抓取安卓手机.苹果手机中APP应用的http.https请求包信息1.抓取安卓手机中APP应用的http请求包信息1)在电脑上操作,查看Windows机器 ...

  4. 手工恢复OSSIM数据库密码

    1,现象 今天需要远程连接ossim的mysql数据库读取些东西,于是登录ossim的终端,发现这个mysql客户端无法直接登录,使用自己安装时候那些口令都不行 alienvault:~# mysql ...

  5. 检查windows端口被占用

    开始---->运行---->cmd,或者是window+R组合键,调出命令窗口 输入命令:netstat -ano,列出所有端口的情况.在列表中我们观察被占用的端口,比如是49157,首先 ...

  6. python爬虫之路——Python的re模块及其方法

    介绍常用的三种方法:search(),sub(),findall() search():匹配并提取第一个符合规律的内容,然后返回一个正则表达式的对象 #提取字符串中的第一个数字 import re a ...

  7. SAP Cloud for Customer客户主数据的地图集成

    点击这个按钮可以通过地图的方式查看C4C客户在地图上的地理位置: 只需要在这个客户的地址栏里维护上天府软件园的经度和维度: 就能够在C4C的客户列表页面里显示该客户在地图上的位置: 要获取更多Jerr ...

  8. SAP数据中心概述

    文章目录 SAP数据中心内部的组成部分 SAP数据中心的安全性 SAP数据中心的绿色运营 SAP云平台编程环境 Jerry的前一篇文章企业数字化转型与SAP云平台介绍了SAP云平台在企业数字化转型中的 ...

  9. Ajax的原理及Django上传组件

    title: Ajax的原理及Django上传组件 tags: Django --- Ajax的原理及Django上传组件 Ajax的原理 ajax 是异步JavaScript和xml ajax就是向 ...

  10. Hibernate中session的save方法问题

    今天在使用session.save(),进行插入数据操作时,一直没有成功,也没有报错.后来发现是因为没有创建事务,提交事务的原因 你对flush和commit的意思没有理解到:1,flush代表刷新, ...