有关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);

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

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

转载于:https://www.cnblogs.com/lxjshuju/p/6811756.html

深入了解UIAutomation 的API相关推荐

  1. (转载)中文Appium API 文档

    该文档是Testerhome官方翻译的源地址:https://github.com/appium/appium/tree/master/docs/cn官方网站上的:http://appium.io/s ...

  2. 中文 Appium API 文档

    该文档是Testerhome官方翻译的 源地址:https://github.com/appium/appium/tree/master/docs/cn 官方网站上的:http://appium.io ...

  3. 桌面自动化winappdriver、uiautomation、win32、pyautogui...

    我的需求是不通过鼠标也能实现点击等操作 就像浏览器脚本一样  可以不用鼠标,可以在自动化脚本运行时我们能做其他的事,但是经过上时间的发掘,我没发现这些库能较好地实现这样的需求 winappdriver ...

  4. c语言 谓词,iOS 谓词(Predicate)指南

    Edit this DociOS 谓词(Predicate) 在查看 '-ios uiautomation' 搜索策略时了解 谓词(Predicate) 十分必要. UIAutomation Java ...

  5. Visual Studio关于hook项目的简单使用

    参考 DLL注入_拦截技术之Hook方式: 可知 如果我想要使用hook的dll注入方式来获取其他程序的数据,则关键的对象有: 操作 启动程序和给dll传递程序线程id 的一个程序 对目标程序的消息进 ...

  6. python uiautomation选择list内容_使用python UIAutomation从QQ2017(v8.9)群界面获取所有群成员详细资料,...

    首先安装pip install uiautomation, 再运行本文代码.或者下载https://github.com/yinkaisheng/Python-UIAutomation-for-Win ...

  7. Android4.3引入的UiAutomation新框架官方简介

    译者序:Google在Android 4.3发布时提供了一套新的UiAutomation框架来支持用户界面自动化测试,该框架通过运用已有的Accessibility APIs来模拟用户跟设备用户界面的 ...

  8. Appium+python自动化8-Appium Python API

    Appium+python自动化8-Appium Python API 前言: Appium Python API全集,不知道哪个大神整理的,这里贴出来分享给大家. 1.contexts contex ...

  9. Python uiautomation初探,测试Win10计算器

    在网上找 Python 客户端自动化测试的库,一般有 pywinauto.pywin32.pyautogui.uiautomation.本文仅对 uiautomation 做简单的了解. MS UI ...

最新文章

  1. php的异常处理,PHP异常处理Exception类
  2. 详解:面向对象与面向过程的比较 类之间的关系:泛化、实现、依赖、关联、聚合、组合
  3. java如何写线程外部类_廖雪峰Java读书笔记(六)--多线程(或称并发)
  4. PermGen space处理方法1
  5. Lesson 001 —— 数据
  6. 解决phpcms V9 推荐位无法排序
  7. tsp遗传算法 c语言,遗传算法解决TSP问题
  8. Redis 集合排序
  9. java nginx 502_Nginx 502 Bad Gateway错误的解决方案
  10. 你知道java中重载和重写的区别吗?(详细解说)
  11. Preliminary Design Review(初步设计评审(回顾))
  12. 如何写工学硕士学位论文
  13. 金贵子为什么能把托育做成功—专访济南唐冶校区张楠园长
  14. matplotlib 设置坐标轴位置(spines),设置坐标别名(xticks,yticks)
  15. 大陆中文网站流量排名前100
  16. Java 面向对象(六)
  17. java 字节替换_java 替换四个字节的字符 apos;\xF0\x9F\x98\x84\xF0\x9F)的解决方案 - 好库文摘...
  18. [Redis]redis-cli命令大全
  19. excel2016打开后界面为灰色
  20. TED | 怎样成为一个自律的人

热门文章

  1. 星辰大海:阿里数据体验技术揭秘!
  2. 美术设计经验分享:6招提升照明效果
  3. MySQL复习资料(六)——MySQL-多表联合查询
  4. ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
  5. Oracle 如何修改列的数据类型
  6. Linux 下关闭防火墙设置
  7. 设置elementUI的table组件滚动条位置
  8. 《学习之道》第七章总结
  9. 「SDOI2016」储能表(数位dp)
  10. 关于js css html加载顺序整理