哎,话不多说,看代码吧,要有耐心看,一个代码大杂烩笔记,
package com.mymooc.test;
import java.awt.peer.SystemTrayPeer;
import java.io.File;
import android.os.RemoteException;
import android.view.KeyEvent;
import com.android.uiautomator.core.UiCollection;
import com.android.uiautomator.core.UiDevice;
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 testMyUi extends UiAutomatorTestCase {
public void testDevice() {
try {
UiDevice d = UiDevice.getInstance();
d.pressHome();// 按home键
d.pressMenu();// 按菜单键
d.pressRecentApps();// 查看最近打开的应用
d.waitForIdle(3000);// 等待3s
if (d.isScreenOn()) {// 如果检测到屏幕是开着的就灭屏
d.sleep();// 灭屏幕
}
if (!d.isScreenOn()) {
d.wakeUp();// 唤醒屏幕
}
d.click(200, 300);
d.waitForIdle(1000);// 等待1s
d.takeScreenshot(new File("/sdcard/a.png"));//截屏并保存为sdcard目录下的a.png
/*
* d.pressKeyCode(KeyEvent.KEYCODE_0);//在输入框中对字符进行输入0
* d.pressKeyCode(KeyEvent.KEYCODE_9);//在输入框中对字符进行输入9
*/
d.openNotification();// 拉取下拉栏
d.openQuickSettings();// 点击快速设置
// 拖拽动作,起始位置到最终位置,
d.drag(600, 400, 350, 700, 30);
d.waitForIdle(5000);
// 拖拽动作,拖回来
d.drag(350, 700, 600, 400, 30);
// 滑屏幕
// devcie.swipe(startX, startY, endX, endY, steps)
/*
* devcie.swipe(200, 1200, 1200, 200, 20); devcie.swipe(1200, 200,
* 200, 1200, 20);
*/
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void testSelector() {
try {
// =======================================================
// 以下就是4种通过text属性来匹配控件,定位打开app的方式(对应在uiautomator中的text属性)
// UiSelector s=new
// UiSelector().text("浏览器");//定位到text为浏览器的控件。。这里可能会出新编译乱码问题出现,那就需要在项目的属性里面resource里面将编码格式改为utf-8
// UiSelector s=new UiSelector().textContains("览");//模糊定位
// UiSelector s=new UiSelector().textMatches(".*器");//正则表达式模糊定位
// UiSelector s=new UiSelector().textStartsWith("浏");//以首字母开始的模糊定位。
// 还可以通过description来匹配控件,(对应在uiautomator中的content-desc属性)
UiSelector s=new UiSelector().description("浏览器");
// UiSelector s=new UiSelector().descriptionStartsWith("浏");
// UiSelector s=new UiSelector().descriptionMatches(".*器");
// UiSelector s=new UiSelector().descriptionContains("览");
// UiSelector s=new
// UiSelector().packageName("com.vphone.launcher");//包名
// 针对空间树中存在多个textviwe情况,使用叠加index
// UiSelector s=new
// UiSelector().className("android.widget.TextView").index(1);//针对于当前的空间树
// UiSelector s=new
// UiSelector().className("android.widget.TextView").instance(0);//针对于整个的空间树
// UiSelector s=new
// UiSelector().resourceId("com.ibox.calculators:id/digit6");
// UiSelector s = new UiSelector().focused(true);
UiObject browserBtn = new UiObject(s);// 获取s的对象
browserBtn.setText("immmox");
browserBtn.click();
} catch (UiObjectNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
public void testObject() {
try {
UiObject obj = new UiObject(new UiSelector().text("ES文件浏览器"));// 通过oject来打开软件app
UiObject obj1 = new UiObject(
new UiSelector()
.resourceId("com.estrongs.android.pop:id/grid_view"));
// obj.dragTo(new UiObject(new UiSelector().text("计算器")), 80);//拖动
// obj.clickAndWaitForNewWindow(1000);//字面翻译的意思1s
// obj1.swipeLeft(80);//滑动(针对软件里面 的控件来进行拖拽)
if (obj1.exists()) {
obj1.swipeRight(100);
}
UiObject obj2 = new UiObject(
new UiSelector()
.resourceId("com.estrongs.android.pop:id/search_src_text"));
obj2.setText("bcdbsvhcdbshv");
System.out.print(obj2 + "--------------");
} catch (UiObjectNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void testCollection() {
try {
UiCollection view = new UiCollection(
new UiSelector().className("android.widget.LinearLayout"));
// 获取到了一个UiCollection对象,可以通过它来获取object对象
UiObject btn4 = view.getChildByText(
new UiSelector().className("android.widget.Button"), "4");
UiObject btn5 = view.getChildByText(
new UiSelector().className("android.widget.Button"), "5");
UiObject btn6 = view.getChildByText(
new UiSelector().className("android.widget.Button"), "6");
UiObject btn7 = view.getChildByText(
new UiSelector().className("android.widget.Button"), "+");
UiObject btndengyu = new UiObject(
new UiSelector()
.resourceId("com.ibox.calculators:id/equal"));
btn4.click();
btn5.click();
btn7.click();
btn6.click();
btndengyu.click();
int cnt = view.getChildCount();// 查看有多少个子对象
System.out.print(cnt + " XXXXXXXXX\n");
int antt = view.getChildCount(new UiSelector()
.className("android.widget.Button"));
System.out.print(antt + " YYYYYYYY\n");
} catch (UiObjectNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void testScrollable() throws UiObjectNotFoundException {//throws UiObjectNotFoundException
UiScrollable scroll=new UiScrollable(new UiSelector().className("android.widget.LinearLayout").index(3));
scroll.scrollBackward();//向后滚动
//scroll.scrollForward();//向前滚动
//scroll.scrollForward(500);//指定步长的滚动
//scroll.scrollToBeginning(20);//做多少次滚动的操作到顶部
//scroll.scrollToEnd(20);做多少次滚动的操作到底部
//scroll.scrollToBeginning(20, 10);//做多少次多少步数滚动的操作到顶部
/*scroll.flingBackward();//快速往后滚动
scroll.flingForward();//快速往前滚动
scroll.flingToBeginning(20);//快速做多少次滚动的操作到顶部
scroll.flingToEnd(20);//快速做多少次滚动的操作到底部
*/
//下面三种写法都是一样的,都是滚动到关于平板电脑那一栏
/* scroll.scrollTextIntoView("关于平板电脑");
scroll.scrollIntoView(new UiObject(new UiSelector().className("android.widget.LinearLayout").index(17)));
scroll.scrollIntoView(new UiSelector().text("关于平板电脑"));
//滚动后找到要找的按钮,且进行按下
UiObject btn=scroll.getChildByText(new UiSelector().className("android.widget.LinearLayout"), "关于平板电脑", true);
btn.click();*/
}
public static void main(String[] args) {
String jarName = "myjar";
String testClass = "com.mymooc.test.testMyUi";
String testName = "testSelector";// 方法名(你要执行哪个方法的时候就填写相应的方法名称)
String androidId = "1";// 查看这编号在cmd里面输入:android list target,必须选18以上的
new UiAutomatorHelper(jarName, testClass, testName, androidId);
}
}