SilkTest天龙八部系列5-类的属性
SilkTest的面向对象机制让用户可以为类定义属性,用property语句实现。除此以外用户在类中还可以定义成员变量和不可变的setting属性。也就是是说Silktest类中可以有以下三种属性/变量被使用到:
属性(用property申明)
成员变量
属性(用setting声明)
用property语句定义的属性可以让用户方便地使用=号来设置和获取类的某些属性,这里的属性是指逻辑上的一些属性,用来表现类的某些特征,这些特征可能是动态变化的。例如在某个时间点,一个控件所包含的子控件个数(我们可以通过一个循环来遍历该控件来得到子控件的个数)又或者是一个页面上当前得到焦点的控件名等等。
成员变量一般作为类的计算元素,或者是中间结果持有者,一般不用来直接表示复杂的逻辑内容。
至于setting属性可以对类的一些系统属性进行控制,例如,一个类是否继承使用父类的tag,又或者是使用哪些父类的tag.
值得注意的是property的声明是通过set和get两个函数实现的,所谓的逻辑也是在这两个函数中实现的。其中set只能有一个参数并且返回值是void,而get不能有参数,但是必须有返回值。set和get至少有一个要出现在property的声明中。
另外setting的限制是只能在类中赋值,并且是不可更改的。
下面是一个可以运行的例子: 最后一行的注释打开后会导致无法运行
[-] winclass DemoDialog
[ ] Integer iZ = 30
[-] property iZPos
[-] void Set(integer i)
[ ] iZ = i
[-] integer Get()
[ ] return iZ
[ ] setting iXPos = 10
[ ] setting iYPos = 20
[ ]
[ ] window DemoDialog dd
[ ]
[-] testcase property_test()
[ ] // test setting
[ ] Print(dd.iXPos)
[ ] Print(dd.iYPos)
[ ] // test member variable
[ ] Print(dd.iZ)
[ ] // test property
[ ] dd.iZPos = 50
[ ] Integer iTemp = dd.iZPos
[ ] Print(iTemp)
[ ] // test member variable for class
[ ] Print(DemoDialog().iZPos)
[ ] Print(DemoDialog().iZ)
[ ] // change setting is not allowed
[ ] // dd.iXPos = 90
SilkTest天龙八部系列5-类的属性的更多相关文章
- SilkTest天龙八部系列4-ChildWin
一直觉得SilkTest的ChildWin不好理解,今天大致看了一下,其实它和DialogBox每啥区别,也是一种window类型.帮助里面说,典型的ChildWin就是文档窗口.在Windows上, ...
- SilkTest天龙八部系列1-初始化和构造函数
SilkTest没有提供专门的构造函数机制,但是在类对象生成的过程中,会先初始化在类中申明的变量.我们可以在初始化该变量的时, 调用某些函数完成对象初始化工作,看上去好像是调用了构造函数一样.不过要记 ...
- SilkTest天龙八部系列3-动态父窗口
SilkTest中用parent语句来声明某个window的父窗口,这会帮助silktest在识别该对象时检查其是否是由该父窗口打开,如果parent语句申明的父窗口并不存在,那么该对象无法被正确识别 ...
- SilkTest天龙八部系列6-用open agent进行测试
SilkTest支持两种测试模式,一种是用classic agent,另一种就是用我们今天要介绍的open agent. open agent可以提供和classic agent差不多的录制回放功能. ...
- SilkTest天龙八部系列7-动态对象识别
在测试web应用时,我们常常需要面对web页面对象变化频繁,并且使用预定义方式识别对象慢的困难.为了解决这些问题,SilkTest引入了dynamic object recognition技术,它使用 ...
- 编写高质量的Python代码系列(四)之元类及属性
元类(metaclass)及动态属性(dynamic attribute)都是很强大的Python特性,然后他们也可能导致及其古怪.及其突然的行为.本节讲解这些机制的常见用法,以确保各位程序员写出来的 ...
- 深入理解javascript函数系列第三篇——属性和方法
× 目录 [1]属性 [2]方法 前面的话 函数是javascript中的特殊的对象,可以拥有属性和方法,就像普通的对象拥有属性和方法一样.甚至可以用Function()构造函数来创建新的函数对象.本 ...
- C#控件系列--文本类控件
C#控件系列--文本类控件 文本类控件主要包含Label.LinkLabel.Button.TextBox以及RichTextBox. Label 功能 Label用来 ...
- IL接口和类的属性
上一篇文章学习了IL的入门,接下来我们再通过两个例子来了解下类的属性.构造函数以及接口的使用 一.类的属性.构造函数 1.先看下我们要构建的类的C#代码,然后再进行IL的实现,示例代码如下: [Ser ...
随机推荐
- protel99_拼板详细图解
首先打开PCB文档.如图所示,在PCB左下角放置一個坐標為X=0,Y=0的焊盤. 从下图看,为了方便电路板生产厂家的加工和焊接工厂的加工,拼版的方向是向上Y轴方向拼版. 接着为了在拼版过程中好对齐板边 ...
- android studio 快捷笔记
setting->editor->打勾 ctrl+Q ctrl+tab alt+回车 ctrl+shift+回车
- Binary Tree Level Order Traversal II --leetcode C++
考察点 广度优先遍历--层次遍历 STL内容器的用法 广度优先遍历的时候,首先应该想到的就是借助于队列.还需要在遍历下一层之前保存当前层节点的数量 代码很简单: class Solution { pu ...
- VS2010/MFC设置对话框控件的Tab顺序
设置对话框控件的Tab顺序 前面几节为大家演示了加法计算器程序完整的编写过程,本节主要讲对话框上控件的Tab顺序如何调整. 上一讲为“计算”按钮添加了消息处理函数后,加法计算器已经能够进行浮点数的加法 ...
- C语言实验——一元二次方程Ⅱ
C语言实验--一元二次方程Ⅱ Time Limit: 1 Sec Memory Limit: 64 MB Submit: 169 Solved: 131 [Submit][Status][Web ...
- 用Html5结合Qt制作一款本地化EXE游戏-太空大战(Space War)
本次来说一说如何利用lufylegend.js引擎制作一款html5游戏后将其通过Qt转换成EXE程序.步骤其实非常简单,接下来就一步步地做一下解释和说明. 首先我们来开发一个有点类似于太空大战的游戏 ...
- 【转】利用Ajax.BeginForm提交文件
Ajax.BeginForm @using (Ajax.BeginForm("YourAction", "YourController", new AjaxOp ...
- SharePoint 2010以其他用户身份登录的弹出代码
在SharePoint 2010平台中,可以在当前用户登录系统的情况下使用其他用户身份登录,以达到在同一浏览器中切换用户身份的目的. 每个用户登录SharePoint系统之后都会在系统右上角将用户的名 ...
- Quiz 6a Question 7————An Introduction to Interactive Programming in Python
First, complete the following class definition: class BankAccount: def __init__(self, initial_bal ...
- Regex阅读笔记(二)之环视
环视不匹配任何字符,只匹配文本中的特定位置. 正序环视:(?=) 逆序环视:(?<=) 非捕获(?:) 环视会检查子表达式能否匹配,但它只寻找能够匹配的位置,而不会真正占用这些字符. -用在字符 ...