uiautomator简单使用(三)

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

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);
	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值