UiDevice 类介绍
1.UiDevice 代表设备状态
2.UiDevice 为单例模式
获取UiDevice实例的方式:
1) UiDevice.getInstance()
2) getUiDevice()
注意:第二种方式获取UiDevice实例,当含有该实例的类被别的类调用时会报空指针错误。
举例:
TestGetUiDevice1.java
package com.uiautomatortest; import com.android.uiautomator.testrunner.UiAutomatorTestCase; public class TestGetUiDevice1 extends UiAutomatorTestCase { public void press(){ getUiDevice().pressMenu(); getUiDevice().pressHome(); } }
TestGetUiDevice2.java
package com.uiautomatortest; import android.os.Bundle; import android.os.RemoteException; import com.android.uiautomator.core.UiDevice; import com.android.uiautomator.testrunner.UiAutomatorTestCase; public class TestGetUiDevice2 extends UiAutomatorTestCase { public void testDevice(){ TestGetUiDevice device1=new TestGetUiDevice(); device1.press(); } public static void main(String[] args){ String jarName, testClass, testName, androidId; jarName="DemoTest"; testClass="com.uiautomatortest.Test"; testName="testDevice"; androidId="1"; new UiAutomatorHelper(jarName, testClass, testName, androidId); } }
类TestGetUiDevice2里调用类TestGetUiDevice1中包含getUiDevice()的press方法时报空指针错误:java.lang.NullPointerException
如果将TestGetUiDevice1.java中的getUiDevice()换成UiDevice.getInstance()则可以正常运行,修改后的TestGetUiDevice1.java如下:
package com.uiautomatortest; import com.android.uiautomator.core.UiDevice; import com.android.uiautomator.testrunner.UiAutomatorTestCase; public class TestGetUiDevice1 extends UiAutomatorTestCase { public void press(){ // getUiDevice().pressMenu(); // getUiDevice().pressHome(); UiDevice.getInstance().pressMenu(); UiDevice.getInstance().pressHome(); } }
因此目前都是采用UiDevice.getInstance()方式获取UiDevice实例。
3.UiDevice 功能
1)获取设备信息:屏幕分辨率,旋转状态,亮灭屏状态等
2)操作:按键,坐标操作,滑动,拖拽,灭屏唤醒屏幕,截图等
3)监听功能