初探UiAutomator(二)

原创 2015年11月20日 14:51:22

本系类是我学习极客学院的测试类的学习笔记。

这次学习了UiDevice对象。

1、uidevice 获得实例的方法

UiDevice.getInstance();

getUiDevice();

推荐使用第一种方法,第二种方法在封装方法进行调用的时候会出现空指针的情况。

2、模拟按键

UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_PERIOD);

3、模拟拖动和滑动

drag和swipe

UiDevice.getInstance().drag(533, 1498, 1000, 1498, 40);
UiDevice.getInstance().swipe(533, 1498, 1000, 1498, 40);

4、屏幕操作

UiDevice.getInstance().setOrientationLeft();<span style="white-space:pre">	</span>//通过禁用传感器,设备向左旋转并且固定位置
UiDevice.getInstance().unfreezeRotation();<span style="white-space:pre">	</span>//重新启用传感器和允许物理旋转<span style="white-space:pre">	</span>
UiDevice.getInstance().isNaturalOrientation();<span style="white-space:pre">	</span>//检测设置是否处于默认旋转状态
UiDevice.getInstance().getDisplayRotation();<span style="white-space:pre">	</span>//返回当前的显示旋转
UiDevice.getInstance().freezeRotation();<span style="white-space:pre">	</span>//禁用传感器和冻结装置物理旋转在其当前的旋转状态

5、灭屏和唤醒

UiDevice.getInstance().sleep();
UiDevice.getInstance().wakeUp();

6、截图和等待空闲

UiDevice.getInstance().takeScreenshot(new File("/sdcard/123.png"));
UiDevice.getInstance().waitForIdle();

7、获得包名和开启通知栏

UiDevice.getInstance().getCurrentPackageName();<span style="white-space:pre">		</span>//获得当前界面的包名
UiDevice.getInstance().dumpWindowHierarchy("layout");<span style="white-space:pre">	</span>//获取当界面的布局文件
UiDevice.getInstance().openNotification();<span style="white-space:pre">		</span>//打开通知栏
UiDevice.getInstance().openQuickSettings();<span style="white-space:pre">		</span>//打开快速设置


8、一个小小的示例

亮屏->解锁->单击网址输入框->输入www.baidu.com->按回车键->旋转屏幕->截图

<span style="white-space:pre">	</span>public void testExample(){
		//亮屏->解锁->单击网址输入框->输入www.baidu.com->按回车键->旋转屏幕->截图
		try {
			//亮屏幕
			UiDevice.getInstance().sleep();
			UiDevice.getInstance().wakeUp();
			sleep(2000);
			//解锁
			UiDevice.getInstance().drag(533, 1498, 1000, 1498, 40);
			sleep(2000);
			//点击浏览器
			UiDevice.getInstance().click(923, 1798);
			sleep(2000);
			//点击输入框并删除
			UiDevice.getInstance().click(525, 158);
			UiDevice.getInstance().pressDelete();
			sleep(2000);
			//输入www.baidu.com
			UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_W);
			UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_W);
			UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_W);
			UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_PERIOD);
			UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_B);
			UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_A);
			UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_I);
			UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_D);
			UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_U);
			UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_PERIOD);
			UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_C);
			UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_O);
			UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_M);
			sleep(2000);
			//按下回车键
			UiDevice.getInstance().pressEnter();
			sleep(2000);
			//旋转屏幕
			UiDevice.getInstance().setOrientationLeft();
			sleep(2000);
			//截图
			UiDevice.getInstance().takeScreenshot(new File("/sdcard/123.png"));
			sleep(2000);		
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

9、使用UiAutomatorHelper快速测试


public class Text extends UiAutomatorTestCase {
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String jarName, testClass, testName, androidId;
		jarName="Dome1";<span style="white-space:pre">		</span>//测试名
		testClass="com.jky.Text";<span style="white-space:pre">	</span>//包名+类名
		testName="testDome";<span style="white-space:pre">		</span>//需要测试的方法名
		androidId="6";<span style="white-space:pre">			</span>//id号
		new UiAutomatorHelper(jarName, testClass, testName, androidId);
	}

	public void testDome(){
		UiDevice.getInstance().pressHome();
	}
}



点击UiAutomatorHelper下载



由 uiautomator 二次开发得到的启发以及完善

最近看到cpfeng0124 的关于二次开发之自动生成控件定位符,心里感概真是相当棒的思路,但是可能由于是公司的项目所以就点到为止并没有深入去解释其他一些功能。 这两天抽空研究了下吧,将部分的功能也...
  • wanglha
  • wanglha
  • 2015年08月10日 14:26
  • 1706

Android自动化测试之UIAutomator(一)

一、自动化测试的必要性 Android程序开发迭代周期短,测试case重复度高,大部分case属于功能验证,常规的测试方法是测试人员按照预先写好的Case手顺进行测试,人工比对操作结果和预期结果。这...
  • qq_21071977
  • qq_21071977
  • 2016年08月30日 09:36
  • 2633

使用uiautomator做UI测试

在Android 4.1发布的时候包含了一种新的测试工具– uiautomator ,uiautomator是用来做UI测试的。也就是普通的手工测试,点击每个控件元素 看看输出的结果是否符合预期。比如...
  • chenbang110
  • chenbang110
  • 2014年04月10日 17:41
  • 37853

初探UiAutomator(四)

本系类是我学习极客学院的测试类的学习笔记。 这次学习了UiCollection、UiScrollable和UiWatcher UiCollection 根据条件来获取对象,然后通过筛选得到自己需要的处...
  • pha_kuwan
  • pha_kuwan
  • 2015年11月25日 09:16
  • 273

初探UiAutomator(一)

UiAutomator环境配置: 1、java环境,这个网上有一堆 2、增加android 环境变量,sdk环境变量:*\sdk\platform-tools  *\sdk\platform-tool...
  • pha_kuwan
  • pha_kuwan
  • 2015年11月18日 19:51
  • 784

android自动化测试Uiautomator API分析之二

对控件的操作,主要在UiObject中。例如各种点击事件。 以长按事件来论述详细的流程。 UiObject的longClick方法如下, public boolean longClick() t...
  • u012439416
  • u012439416
  • 2017年04月15日 18:28
  • 556

UiAutomator笔记之UiDevice API(二)

一、UiDevice类简介 1、UiDevice代表设备状态。如屏幕的大小、旋转方向、按压各种按键等。 2、UiDevice为单例模式,可有2种方式获取其实例。 (1)UiDevice.get...
  • yiwaChen
  • yiwaChen
  • 2016年09月17日 22:41
  • 2474

android uiautomator学习(二)主要类的功能简单介绍

各个类的主要作用如下: 可用UiDevice表示设备 getUiDevice().pressHome(); UiSelector表示一个搜索条件以获取一个特定的组件。 UiObje...
  • pugongying1988
  • pugongying1988
  • 2014年10月30日 16:16
  • 1627

VB 共享软件防破解设计技术初探(二)的软件源码

  • 2011年04月09日 19:08
  • 134B
  • 下载

【初探Spring】——Spring IOC(二):初始化过程—简介

首先我们先来看看如下一段代码ClassPathResource resource = new ClassPathResource("bean.xml"); DefaultListabl...
  • chenssy
  • chenssy
  • 2016年06月12日 18:33
  • 4004
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:初探UiAutomator(二)
举报原因:
原因补充:

(最多只允许输入30个字)