老李分享:接电话之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;
        }
    }
}

老李分享:接电话之uiautomator 1的更多相关文章

  1. 老李分享:接电话扩展之uiautomator 1

    老李分享:接电话扩展之uiautomator   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq ...

  2. 老李分享:接口测试之jmeter

    老李分享:接口测试之jmeter   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.移动端自动化测试很多人把他仅仅理解成appu ...

  3. 老李分享:持续集成学好jenkins之内置命令

    老李分享:持续集成学好jenkins之内置命令   Jenkins命令调用方式:调用Jenkins命令设置job的描述信息. $JAVA_BIN-jar "$JENKINS_CLI_JAR& ...

  4. 老李分享:持续集成学好jenkins之安装

    老李分享:持续集成学好jenkins之安装   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq: ...

  5. 老李分享:持续集成学好jenkins之解答疑问

    老李分享:持续集成学好jenkins之解答疑问   poptest(www.poptest.cn)在培训的过程中使用jenkins搭建持续集成环境,让学员真正交流持续集成到底是什么,怎么去做的. Je ...

  6. 老李分享:持续集成学好jenkins之Git和Maven配置

    老李分享:持续集成学好jenkins之Git和Maven配置   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣 ...

  7. 老李分享:https协议

    老李分享:https协议   最近我们看到很多站点使用 HTTPS 协议提供网页服务.通常情况下我们都是在一些包含机密信息的站点像银行看到 HTTPS 协议. 如果你访问 google,查看一下地址栏 ...

  8. 老李分享:webservice是什么?

    老李分享:webservice是什么?   前言 Web Services 是 Web 应用出于和其他 Web 应用以交互数据为目的的开放式标准(XML.SOAP.HTTP 等).Web Servic ...

  9. 老李分享: JSON

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

随机推荐

  1. 配置IIS Express以便通过IP地址访问调试的网站

    问题背景 最近使用C#编写了一个WebService,希望通过Java进行调用.使用Visual Studio 2013调试WebService时,可以在浏览器中通过localhost地址访问WSDL ...

  2. [PHP] PHP1 与 CGI

    早期,一个web程序通过cgi方式提供数据处理,编写cgi程序可以用不同的语言. 这个过程是,我们生成一个服务端可执行程序,处理 web server 传过来的请求,(设置header头)然后返回数据 ...

  3. Myeclipse 搭建Java Web 项目:Servlet 《二》

    上一节,我们使用myeclipse部署了web项目,但那部署的为静态的web项目,下面我们来学习编写动态的web项目,编写动态项目必须要用到的为:servlet. Servlet是由sun公司命名的, ...

  4. NSKeyedArchiver/NSKeyedUnarchiver归档应用(缓存实现)

    NSKeyedUnarchiver : 从二进制流读取对象; NSKeyedArchiver :把对象写到二进制流中去. 要实现对数据模型的归档,需要我们实现NScoding协议,(NScoping) ...

  5. 编程思想之——"人是活的,程序是死的"

    "人是活的,程序是死的"这句话我时常提起,可能很多人不是很理解我为什么会这样说,下面我就简单来谈谈我对这句话的理解. 1.不要因为技术而技术,技术选型的初衷是需求. 现在很多人在做 ...

  6. mybatis系列笔记(4)---输入输出映射

    输入输出映射 通过parameterType制定输入参数类型 类型可以是简单类型(int String)也可以是POJO本身 或者包装类 1输入映射 关于输入简单类型和pojo本身的我就不写了,因为比 ...

  7. 【openstack N版】——云主机调整大小\冷迁移

    一.先决条件 云主机冷迁移,即:将一台云主机从一个计算节点上,迁移到另外一个计算节点上.因为环境原因,所以我们需要准备两个计算节点. 1.1准备环境 在控制节点上,安装一个计算节点 #在控制节点安装n ...

  8. JAVA学习之动态代理

    JDK1.6中的动态代理 在Java中Java.lang.reflect包下提供了一个Proxy类和一个InvocationHandler接口,通过使用这个类和接口可以生成一个动态代理对象.JDK提供 ...

  9. 经典网络还是VPC,开发者作何选择?

    近两天,关于公有云经典网络(基础网络)与私有网络(VPC)的讨论引发技术圈极大关注,事件起因于有开发者将数据库限制在内网访问,但由于安全组设置的原因,阿里云邻居用户被黑后,牵连到了自己的业务.为此,开 ...

  10. Java面试12|Linux及Shell脚本

    1. 随便写一个awk的命令.用awk统计文本行数 (1)最近登录的5个帐号 last -n 5 | awk -F ':'(指定域分割符号) '{print $1}' 读入有'\n'换行符分割的一条记 ...