• 老李分享:接电话之uiautomator 1


    老李分享:接电话之uiautomator

     

     poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标。如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-84505200。

    1.UiWatcher

    该接口中只有一个方法

     public abstract boolean checkForCondition ()  

    当我们通过UiSelector匹配控件的时候,如果失败后,会进入该方法进行验证。意思只要我们的控件找不到,都会进入该方法中,那么我们就可以在该方法中判断是否有电话打进来。首先我们去查看有电话打进来的界面,找到一个可以确定是接听界面就行。我们以拒绝接听按钮为标识(不缺钱的可以用接听电话为标识)。

    case的写法

    public class InCallTest extends UiAutomatorTestCase {
        private static final long TIME_OUT = 10 * 60 * 1000;
        private long currentTime;
        private boolean flag = true;

        long eslcape = 0;

        public void test_Call() throws InterruptedException,
                UiObjectNotFoundException {
            UiWatcher inComingWatcher = new MyWatcher();
            getUiDevice().registerWatcher("来电", inComingWatcher);
           
            getUiDevice().pressBack();
            UiObject dialButton = new UiObject(
                    new UiSelector()
                            .resourceId("com.android.sprdlauncher1:id/workspace"));
            System.out.println("waiting for incoming");
            currentTime = System.currentTimeMillis();
            while (flag && eslcape < TIME_OUT) {
                dialButton.clickAndWaitForNewWindow();
                eslcape = System.currentTimeMillis() - currentTime;
            }
            assertFalse("没有收到来电", flag);
        }

        class MyWatcher implements UiWatcher {

            @Override
            public boolean checkForCondition() {
                UiObject inCall = new UiObject(
                        new UiSelector()
                                .resourceId("com.android.dialer:id/IncomingCallRejectButton"));
               
                while (eslcape < TIME_OUT) {
                    if (inCall.exists()) {
                        System.out.println("you have a call");
                        try {
                            inCall.clickAndWaitForNewWindow();
                            flag = false;
                            return true;
                        } catch (UiObjectNotFoundException e) {
                            e.printStackTrace();
                        }
                    }
                    eslcape = System.currentTimeMillis() - currentTime;
                }
                return false;
            }
        }
    }

  • 相关阅读:
    编译使用luasocket
    使用openssl的一些问题
    c++调用lua注册的带参数的回调
    合服
    windows防火墙命令
    mac os .xip格式解压
    Get GPU Data Method
    Unity编译Mono
    Unity Mono运行机制分析及内存优化
    unity5 AssetBundleBuild用法
  • 原文地址:https://www.cnblogs.com/poptest/p/5110666.html
Copyright © 2020-2023  润新知