zoukankan      html  css  js  c++  java
  • 深入了解UIAutomation 的API

    有关UiAUiAutomation的API对象的文件名称。

    1、UIAutomation中的对象都是以UIA#####开头的出现的。eg:UIAButton


    2、有关Logger对象负责日志的输出

    UIALogger类的作用到:1)记录測试的结果   2)负责各个级别的结果的日志的输出


    通常:我们会看看到logStart(message) 開始,以失败或者成功j结束。

    以下是一个实例:(对应的測试代码)

    var target = UIATarget.localTarget();
    
    var testName = "Module 001 Test";
    
    UIALogger.logStart(testName);
    
    UIALogger.logMessage("test");
    UIALogger.logDebug("debug");
    
    target.logElementTree();
    
    UIALogger.logPass(testName);
    
    UIALogger.logWarning("it is not instrict");
    
    UIALogger.logError("错误");
    

    结果:(下图)

    对应的知识点集合:

    測试的状态:(记录測试的结果输出)
    (undefined) logFail(String message)  //測试失败
    (undefined) logIssue(String message)  //測试终止异常
    (undefined) logPass(String message)  //表示測成功
    (undefined) logStart(String message)  //表示測试開始
    
    測试的安全级别:(负责各个级别的日志结果输出)
    (undefined) logDebug(String message) 
    //測试级别为调试。日志调试的输出信息
    (undefined) logError(String message)
    //设置级别为错误,
    (undefined) logMessage(String message)
    //设置级别为信息
    (undefined) logWarning(String message)
    //设置级别为警告
    
    上面试两个不同的结果类型。能够查看结果。
    
    

    有关Element 和 ElementArray的介绍

    Element是全部控件元素的基类,这些控件的元素包含:Target 和Application这两中相对高级的对象。

    空间元素的定位方法:element()方法得到一个元素的子元素数组(Element Array)。数组就好办,依照数组处理就好。

    即为:通过:元素——> 元数组——>元素——> 元数组——>元素——> 元数组——>元素——> 元数组——> 这样的递归的方式来定位须要操作的空间。

    特殊的:由于一般的程序中的一个窗体值包括一个navigationBar,所以能够通过这种方法Element.navigationBar()直接获取,也能够通过Element.navigationBar()[0]这样的方式获取。

    还有tabar也是类似。

    (这些都是理论,你能够通过录制能够全然不必要记住这些)


    手势识别:

    模拟操作的类主要由两类:各自是Element和Target

    1、element方式:

    1)点击

    一个button、一个cell都是会有点击的事件tap(),可是阅读器那就大了,而且位置不同显示的事件也就不同。那么肯定不是一个点击事件那么简单来实现的,所以有了:tapWithOptions(Options);这种方法。假设一次点击不能够满足,能够有相应的方法doubleTap。一个手指不够是吧。能够用twoFingerTap()相应的方法。

    2)滑动和拖拽

    事实上他们差别不大,仅仅是时间延时上存在差异而已。

    滑动实例:Element.flickInsideWithOptions({touchCount:2 ,startOffset:{x:0.5,y:0.9} ,endOffset:{x:1.0 ,y:0.9}});

    拖拽实例:Element.dragInsideWithOptions({touchCount:2 ,startOffset:{x:0.5,y:0.9} ,endOffset:{x:1.0 ,y:0.9} , duration:1});

    //这个duration 表示的是:手指和屏幕接触的时间。这些參数在官方文档中有。:

    duration默认是0。此时它们是等价的。  touchCount表示手指有多少个同一时候參数操作,默觉得1.


    2、Target方式

    target和Element方式一样提供了两个方法,仅仅是參数不一样而已。

    即为:

    1、element的范围參数是:0~1

    2、UITarget的參数是:详细的数值。


    eg:实例

    UIATarget.localTarget().tap({x:100 , y:200});
    
    UIATarget.localTarget().tapWithOptions({x:100,y:200},{tapCount:1,touchCount:2 ,duration:1});

    由于target是全局对象。所以要传入详细的位置,同一时候还要:点击的次数(tapCount。默认值为:1),点击是手指的个数(touchCount ,默觉得1) 。点击时候接触时间(duration,默认值为0)

    相同也有doubleTap和twoFingerTap


    滑动和拖拽:

    滑动:flickFromTo  拖拽:dragFromToForDuration, 尽管方法名不同,可是使用方法全然同样。


    pinch 捏合与缩放,通常是放在图上面

    有pinchOpen 和 pinchClose

    代码实例:

    UIATarget.localTarget().pinchOpenFromToForDuration({x:20 y:200},{x:300 y:200}, 1);
    
    UIATarget.localTarget().pinchCloseFromToForDuration({x:20 y:200},{x:300 y:200}, 1);
    
    

    总结:1、element和Target是站在两个不同的API描写叙述的,一个是对于控件的元素,一个是对于总体的位置(详细)。结果都是一样的,可能element用的会比較多一点(或许)


    3、延时处理:

    经典方法:delay(延迟时间);

    获取子元素的方法:var elementArray = Element.elements;

    存在则高速返回,否则时间消耗长。被超时处理机制处理。且默认的超时为5s。所以会迟延測试的时间。

    须要将超时时间设置为更加的短:

    UIATarget.localTarget().setTimeout(1);

    //即为设置超时为1s。且这样的设置为全局设置,这样存在不灵活的隐患。

    var elementArray = Element.elements();

    改进的方法:

    UIATarget.localTarget().pushTimeOut(1);

    var elementArray = Element.elements();

    UIATarget.localTarget().popTimeOut(1);

    中间的代码被改动为超时1s。其它的代码不会受到影响。


    4、Target对象的系统级别的操作,即为:能够提供设备底层的方法。

    1、系统信息

    Target 对象提供一系列的获取系统信息的方法。

    eg:

    var Target = UIATarget.localTarget();

    UIAlogger.logmessager(target.model());

    UIAlogger.logmessager(target.rect().size.width);

    UIAlogger.logmessager(target.systemVersion());


    2、模拟地址坐标

    用于測试尤其是在地图上面的推荐服务等等。

    var target = UIATarget.localTarget();

    target.setLocation("longitude ":123.3 ,"latitude":23);//获取经纬度设置在这里就好了


    3、“摇一摇”之摇晃模拟

    我们常常在微信、微博中的摇一摇功能測试

    UIATarget.localTarget().shake();


    4、锁屏幕和多应用交互模拟

    一般我们打开另外一个程序之后。则当前的这个程序就会自己主动进入后台。自己主动測试无法測试后台应用是否正常,我们能够通过推断应用从后台到前台的时候是否正常处理程序。

    eg:随意的位置插入代码:

    UIATarget.localTarget().lockForDuration(2);//锁屏2秒之后。自己主动恢复

    UIATarget.lcoalTarget().deactivateAppForDuration(2);

    若是本来正确的程序而如今插入之后不对,那么从后台切换到前台的过程是有问题的。


    哎,这漫漫理解吧。没有什么技术含量。

  • 相关阅读:
    [机器人仿真软件(一)]V-REP与MATLAB进行通讯的方法
    TCP接收非法数据0xFFF4FFFD06的问题
    std::numeric_limits::epsilon
    linux 设置默认网关
    更换pip源
    实时屏幕传输
    安装node
    window 添加服务
    数据集格式
    jupyter 设置密码
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/6811756.html
Copyright © 2011-2022 走看看