uiautomator简单使用(三)

来源:互联网 发布:微信清理僵尸粉源码 编辑:程序博客网 时间:2024/06/04 20:36

哎,话不多说,看代码吧,要有耐心看,一个代码大杂烩笔记,

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);// 等待3sif (d.isScreenOn()) {// 如果检测到屏幕是开着的就灭屏d.sleep();// 灭屏幕}if (!d.isScreenOn()) {d.wakeUp();// 唤醒屏幕}d.click(200, 300);d.waitForIdle(1000);// 等待1sd.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 blocke.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 blocke1.printStackTrace();}}public void testObject() {try {UiObject obj = new UiObject(new UiSelector().text("ES文件浏览器"));// 通过oject来打开软件appUiObject 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 blocke.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 blocke.printStackTrace();}}public void testScrollable() throws UiObjectNotFoundException {//throws UiObjectNotFoundExceptionUiScrollable 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);}}