UIAtomation的一些属性的了解

//这个方法自动测试的时候会自动调用
//注意:这个方法一定要放在前面(也就是指定点击“退出”弹出这个警告框之前,因为这样就先加载了)
UIATarget.onAlert = function onAlert(alert) {
    var title = alert.name();

    UIALogger.logWarning("Alert with title " + title );
    target.delay(5);

    UIALogger.logMessage("message");

    if (title == "Are you sure to exit?") {
        target.delay(5);
        alert.buttons()["OK"].tap();
        return true;
    }
    return false;
}
var target = UIATarget.localTarget();
//target.logElementTree();
var messages = "test alert";
UIALogger.logStart(messages);
target.frontMostApp().mainWindow().tableViews()[0].buttons()["Sign out"].tap();
UIALogger.logMessage("message");
target.delay(5);
UIALogger.logPass(messages);  

总结:在呢里最为主要的就是记得将alert相应的函数放在成圣alert的代码之前,一旦模拟到产生代码的方法,UIAtomation自动化测试就会调用这个方法。

下面是一些相关的属性的了解:

1、Element的了解

UIAElement

(Point) hitpoint()
//返回的是当前点击的位置

(Rect) rect()
//返回的控件在主屏幕上的位置

(UIAElementArray) activityIndicators()
//返回的是活动的指示器(元素)数组

(UIAActivityView) activityView()
//返回对象代表活动的视图

(UIAElementArray) ancestry()
//返回指定对象数组的祖先(元素数组)

手势动作
(undefined) tap()
//目标的点击

(undefined) doubleTap()
//双击

(undefined) tapWithOptions(Object options)
//在指定的控件元素上指定特定的手势动作
//这个字典是指定手势的特性,特性的有效的key有以下4中类型:
tapCount:点击的次数(默认是1)
touchCount:解除的个数(这里一般是指的是手指,默认为11)
duration :时间的持续长度,tap默认0,解除并且保持的手势(eg:拖、长按等默认是1)
tapOffset:指定tap手势,默认是{x:0.0, y:0.0}.
通过面的tapOffset使点击更加的准确,左上角为:{x:0.0,0.0}  右下角:{x:1.0,1.0},通过这个我们就明白了相应的内容。
(这个方法使用的会比较多,尤其是在阅读器上的使用,分为不同的区域,将会显示不同的效果)

(undefined) twoFingerTap()
//两个手指点击

(undefined) touchAndHold(Number duration)
//触摸并且保存指定的时间(即为长按的时间延时)

(决定)根据因素的状态
(Boolean) isValid()
//判断指定元素是否有效

 (Boolean) checkIsValid()
//同样是返回指定的元素的状态(相对于上面的元素,确定控件已经存在)

UIAtarget的一些属性方法:

管理app的方法
(UIAApplication) frontMostApp()
//返回一个代表你的app的对象
// 讨论:这个应用对象集合了你app的控制点和协调点
// This UIAApplication object is the centralized point of control and coordination for your app.

获取基本的目标(对象)和主机对象

(UIATarget) localTarget()
//返回一个代表测试系统的对象

(UIAHost) host()
// 返回一个对象代表的是当前目标的主机。

系统级别的操作(设备属性信息):
(String) model()
//设备模型

(String) name()
//设备的名字

(Rect) rect()
//返回设备矩形的范围

(String) systemName()
//返回系统的名字

(String) systemVersion()
//返回系统的版本

设备的方向
(Number deviceOrientation) deviceOrientation()
//返回的当前设备的方向

(undefined) setDeviceOrientation(Number deviceOrientation)
//设备当前的设备的方向

设置超时:
(Number) popTimeout()   //推出超时
(undefined) pushTimeout(timeoutValue)  //压入超时
(undefined) setTimeout(Number timeout)   //设置超时
(Number) timeout()   //获取超时的值

(Boolean) delay(Number timeInterval)
//设置延时(最为常用)

(Boolean) onAlert(UIAAlert alert)
//被UI自动化界面调用,允许你的脚本相应警告
alert    //一个代表警告的实例

可以看到这些常量都改变了前缀
UIA_DEVICE_ORIENTATION_UNKNOWN
//方向不知道
UIA_DEVICE_ORIENTATION_PORTRAIT
//设备室纵向直立,home键是在底部
UIA_DEVICE_ORIENTATION_PORTRAIT_UPSIDEDOWN
//设备纵向倒立的,home键在上面
UIA_DEVICE_ORIENTATION_LANDSCAPELEFT
//横向,且home键在右边
UIA_DEVICE_ORIENTATION_LANDSCAPERIGHT
//横向,且home键在左边
UIA_DEVICE_ORIENTATION_FACEUP
//平方,屏幕向上
UIA_DEVICE_ORIENTATION_FACEDOWN
//平放,屏幕向下
平放,屏幕向下

截屏
(undefined) captureRectWithName(Rect rect, String imageName) //指定大小截屏
(undefined) captureScreenWithName(String imageName) //截全屏

还有其他相应的方法操作用到再了解,比如:相互的作用等等

顺便了解一些技术:

ATA技术是一个关于IDE(Integrated Device Electronics)的技术规范族。最初,IDE只是一项企图把控制器与盘体集成在一起的硬盘接口技术。 随着IDE/EIDE得到的日益广泛的应用,全球标准化协议将该接口自诞生以来使用的技术规范归纳成为全球硬盘标准,这样就产生了ATA(Advanced Technology Attachment)。

序列式SCSI(SAS:Serial Attached SCSI)是一种电脑集线的技术,其功能主要是作为周边零件的数据传输,如:硬盘、CD-ROM等设备而设计的界面。序列式SCSI 由并行SCSI物理存储接口演化而来,是由ANSI INCITS T10技术委员会(T10 committee)开发及维护的新的存储接口标准。与并行方式相比,序列方式能提供更快速的通信传输速度以及更简易的配置。此外SAS并支持与序列式ATA(SATA)设备兼容,且两者可以使用相类似的电缆。

SAS接口使用更细的电缆搭配更小的连接器,一方面节约了服务器或存储设备的空间,另一方节省了空间,从而提高了使用SAS硬盘服务器的散热、通风能力。而传统的SCSI接口使用较大的并行电缆,这会带来部分电子干扰,采用SAS的电缆结构就不会出现此问题。另外每个SAS电缆有四根电缆,两根输入两根输出。SAS可以同时进行数据的读写,全双工的数据操作提高数据的吞吐效率。

总的来说SAS技术是结合了SATA与SCSI两者的优点而诞生的,同时串行SCSI(SAS)是点到点的结构,因此除了提高性能之外,每个设备连接到指定的数据通路上提高了带宽,从而为数据传输与存取提供了必要保障。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-14 15:52:20

UIAtomation的一些属性的了解的相关文章

Vue.js学习笔记:属性绑定 v-bind

v-bind  主要用于属性绑定,Vue官方提供了一个简写方式 :bind,例如: <!-- 完整语法 --> <a v-bind:href="url"></a> <!-- 缩写 --> <a :href="url"></a> 绑定HTML Class 一.对象语法: 我们可以给v-bind:class 一个对象,以动态地切换class.注意:v-bind:class指令可以与普通的class特

HTML5新增Canvas标签及对应属性、API详解(基础一)

知识说明: HTML5新增的canvas标签,通过创建画布,在画布上创建任何想要的形状,下面将canvas的API以及属性做一个整理,并且附上时钟的示例,便于后期复习学习!Fighting! 一.标签原型 <canvas width=”1000” height=”1000” id=”myCanvas”> 您的浏览器版本过低,不支持HTML5新增的canvas标签. </canvas> 使用js获取该画布,并指定对象 <script> Var canvasID = doc

CSS3 中的 box-sizing属性

语法: box-sizing: content-text | border-box | inherit; content-box(默认): 宽度和高度分别应用元素的内容框:在宽度和高度之外绘制元素的内边距和边框. border-box: 为元素设定的宽度和高度决定了元素的边框盒:就是说,为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制:通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度. inherit: 规定从父元素继承box-sizing属性的值. 示例: c

WPF 依赖属性概念

理解依赖属性 在 WPF 中变成相比较于 传统 Windows Forms 变成发生了较大的改变. 属性现在以一组服务的形式提供给开发人员. 这组服务就叫做属性系统. 由 WPF 属性系统所支持的属性成为依赖属性. 依赖属性的概念 WPF 在依赖属性中提供了标准属性无法提供的功能, 特性如下: 决定属性值: 依赖属性的属性值可以在运行时有其他元素或者是其他信息所决定, 决定的过程具有一个优先次序. 自动验证或变更通知: 依赖属性哟一个自定的回调方法, 当属性值变更时被执行, 这个回调能验证新的值

C#通过对象属性名修改值

摘自:csdn 给一个对象属性赋值可以通过PropertyInfo.SetValue()方式进行赋值,但要注意值的类型要与属性保持一致. 创建对象实例的两种方法: 1. var obj = Assembly.Load("AssemblyName").CreateInstance("AssemblyName"+"ClassFullName"); 2. var obj = Activator.CreateInstance(ClassType); 创建

20.5 Shell脚本中的逻辑判断;20.6 文件目录属性判断;20.7 if特殊用法;20.8 20.9 cace判断(上下)

扩展: select用法 http://www.apelearn.com/bbs/thread-7950-1-1.html 20.5 Shell脚本中的逻辑判断 格式1:if 条件 ; then 语句; fi 1. 创建if1.sh测试脚本: [[email protected] ~]# vi if1.sh a=5,如果a大于3,满足这个条件,显示ok 添加内容: #!/bin/bash a=5 if [ $a -gt 3 ] then echo ok fi 2. 执行if1.sh脚本: [[e

Meta http-equiv属性详解

http-equiv顾名思义,相当于http的文件头作用,它可以向浏览器传回一些有用的信息,以帮助正确和精确地显示网页内容,与之对应的属性值为content,content中的内容其实就是各个参数的变量值. 引用 meat标签的http-equiv属性语法格式是:<meta http-equiv="参数" content="参数变量值"> :其中http-equiv属性主要有以下几种参数: 1.Expires(期限) 说明:可以用于设定网页的到期时间.一

Js中的数据属性和访问器属性

Js中的数据属性和访问器属性 在javaScript中,对象的属性分为两种类型:数据属性和访问器属性. 一.数据属性 1.数据属性:它包含的是一个数据值的位置,在这可以对数据值进行读写. 2.数据属性包含四个特性,分别是: configurable:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或能否把属性修改为访问器属性,默认为true enumerable:表示能否通过for-in循环返回属性 writable:表示能否修改属性的值 value:包含该属性的数据值.默

跟陈湾来完善C++(2), 添加属性功能

上面几篇文章中,我们添加了名称空间优化,添加事件功能.这些对我来说其实已经够了.但还可以加一个属性功能. 当我们在C++中更改一个属性时,平常都是Get函数加上Set函数,但是这样,没有直接写一个成员变量方便.例如: a.SetValue(a.GetValue() + 1); 没有 a.Value = a.Value + 1; 方便. 但是这种方便只有在调用有属性功能的对象时才能使用.在创建属性的时候我还是用老套路,写一个Get和Set函数,该干啥还是干啥.我的属性功能其实就是在类中添加一个共有