用AS使用Uiautomator自动化测试QQ

来源:互联网 发布:se网络验证源码 编辑:程序博客网 时间:2024/04/29 14:43

写一个简单的例子,我们完成一个 ” 打开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();

0 0