UiWatcher

示例代码:
package mqqzt.myuitest6;

import android.app.Instrumentation;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import android.support.test.uiautomator.By;
import android.support.test.uiautomator.Direction;
import android.support.test.uiautomator.UiDevice;
import android.support.test.uiautomator.UiObject2;
import android.support.test.uiautomator.UiWatcher;
import android.support.test.uiautomator.Until;
import android.util.Log;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

/**
 * Created by mqqzt-yang on 2015/11/23.
 */
@RunWith(AndroidJUnit4.class)
public class UiWatcherTest {
    UiDevice uiDevice;
    Instrumentation instrumentation;

    @Before
    public void setUp() {
        instrumentation = InstrumentationRegistry.getInstrumentation();
        uiDevice = UiDevice.getInstance(instrumentation);
    }

    @Test
    public void testUiwatcher() {
        //1. 首先注册监听器
        uiDevice.registerWatcher("phone", new UiWatcher() {
            @Override
            public boolean checkForCondition() {
                Log.i("mqqzt", "phone监听器被触发了!!!");
                UiObject2 incomingCallObj = uiDevice.findObject(By.text("Incoming call"));
                if (incomingCallObj.hasObject(By.text("Incoming call"))) {
                    UiObject2 viewObj = uiDevice.findObject(By.res("com.android.dialer:id/glow_pad_view"));
                    viewObj.fling(Direction.RIGHT, 1000);
                    return true;
                }
                return false;
            }
        });

        uiDevice.registerWatcher("sms", new UiWatcher() {
            @Override
            public boolean checkForCondition() {
                Log.i("mqqzt", "短信监听器被触发了!!!");
                return false;
            }
        });

        //2. 执行测试步骤
        UiObject2 displayObj = uiDevice.findObject(By.text("Display"));
        displayObj.clickAndWait(Until.newWindow(), 20000);
        uiDevice.wait(Until.findObject(By.desc("Navigate up")), 20000);
        UiObject2 returnObj = uiDevice.findObject(By.desc("Navigate up"));
        returnObj.clickAndWait(Until.newWindow(), 20000);

        displayObj = uiDevice.findObject(By.text("Display"));
        displayObj.clickAndWait(Until.newWindow(), 20000);
        uiDevice.wait(Until.findObject(By.desc("Navigate up")), 20000);
        returnObj = uiDevice.findObject(By.desc("Navigate up"));
        returnObj.clickAndWait(Until.newWindow(), 20000);

//        uiDevice.removeWatcher("phone");

        displayObj = uiDevice.findObject(By.text("Display"));
        displayObj.clickAndWait(Until.newWindow(), 20000);
        uiDevice.wait(Until.findObject(By.desc("Navigate up")), 20000);
        returnObj = uiDevice.findObject(By.desc("Navigate up"));
        returnObj.clickAndWait(Until.newWindow(), 20000);

        displayObj = uiDevice.findObject(By.text("Display"));
        displayObj.clickAndWait(Until.newWindow(), 20000);
        uiDevice.wait(Until.findObject(By.desc("Navigate up")), 20000);
        returnObj = uiDevice.findObject(By.desc("Navigate up"));
        returnObj.clickAndWait(Until.newWindow(), 20000);

        displayObj = uiDevice.findObject(By.text("Display"));
        displayObj.clickAndWait(Until.newWindow(), 20000);
        uiDevice.wait(Until.findObject(By.desc("Navigate up")), 20000);
        returnObj = uiDevice.findObject(By.desc("Navigate up"));
        returnObj.clickAndWait(Until.newWindow(), 20000);

        Log.i("mqqzt", "hasAnyWatcherTriggered:" + uiDevice.hasAnyWatcherTriggered());
        Log.i("mqqzt", "hasWatcherTriggered(\"phone\"):" + uiDevice.hasWatcherTriggered("phone"));
        Log.i("mqqzt", "hasWatcherTriggered(\"sms\")" + uiDevice.hasWatcherTriggered("sms"));
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值