写一个简单的例子,我们完成一个 ” 打开QQ,进入QQ空间,然后退出 ” 的case。
代码如下:
package waps.cn.testuiautomator;
import android.support.test.uiautomator.UiAutomatorTestCase;
import android.support.test.uiautomator.UiDevice;
import android.support.test.uiautomator.UiObject;
import android.support.test.uiautomator.UiObjectNotFoundException;
import android.support.test.uiautomator.UiSelector;
import java.io.IOException;
/**
* Created by Lisa on 2017/1/24.
*/
public class Test_qq extends UiAutomatorTestCase{
public void testQQ() throws IOException, UiObjectNotFoundException {
Runtime.getRuntime().exec("am start com.tencent.mqq/com.tencent.mqq.SplashActivity");
sleep(3000);
UiDevice device = getUiDevice();
int width = device.getDisplayWidth();
int height = device.getDisplayHeight();
device.click(width - 50, height - 50);
sleep(1000);
UiObject object1 = new UiObject(new UiSelector().resourceId("com.tencent.mobileqq:id/qzone_feed_entry"));
object1.click();
sleep(3000);
UiObject object2 = new UiObject(new UiSelector().resourceId("com.tencent.mobileqq:id/ivTitleBtnLeft"));
object2.click();
sleep(1000);
device.pressMenu();
sleep(1000);
UiObject object3 = new UiObject(new UiSelector().text("退出QQ"));
object3.click();
sleep(1000);
UiObject object4 = new UiObject(new UiSelector().text("确定"));
object4.click();
sleep(1000);
}
}
照着网上的例子写,写完之后总是报错说用到的id找不到。之后找到了原因:
//需要先把打开QQ,然后通过am start 才能找到之后用到的resourceId,否则报错id找不到。
如果不打开QQ只能用下面的方式:
getUiDevice().pressHome(); //注意:需要把QQ移到手机的主屏幕上才能找到QQ
UiObject wx = new UiObject(new UiSelector().text(“QQ”));
wx.clickAndWaitForNewWindow();