zoukankan      html  css  js  c++  java
  • 老李分享:接电话之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;
            }
        }
    }

  • 相关阅读:
    C++ 把输出结果写入文件/从文件中读取数据
    转载:C++之高精度算法
    借助bool判断使冒泡排序效率提高
    启程
    2017总结,2018的路
    mysql 分组排序
    2021年VS2019最新有效的调试ASP.NET Core源码
    神级Java程序员 开车教你基础开发,最简单 微型Java Web框架
    手把手教你 基础 整合最优雅SSM框架:SpringMVC + Spring
    学习Java绝对要懂的,Java编程中最常用的几种排序算法!
  • 原文地址:https://www.cnblogs.com/poptest/p/5110666.html
Copyright © 2011-2022 走看看