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 ...
随机推荐
- Linux批量重命名文件
五种方法实现Linux批量重命名文件 Linux批量重命名文件是指对某些特定的文件统一进行重新命名,以改变原来一批文件的名称,这里介绍五种方法来实现. Linux批量重命名文件会涉及到改变一个字母.改 ...
- D - 金樽清酒斗十千(搜索dfs)
D - 金樽清酒斗十千 Time Limit:2000MS Memory Limit:524288KB 64bit IO Format:%I64d & %I64u Submit ...
- makefile 里面 := 和 = 的区别
此文版权属于作者所有,任何人.媒体或者网站转载.借用都必须征得作者本人同意! 参考:What is the colon equals sign ( := ) in makefiles? Makefil ...
- DBV-00111: OCI failure (3722) (ORA-01002: fetch out of sequence解决
在使用DBV检测segment的时候出现 DBV-00111: OCI failure (3722) (ORA-01002: fetch out of sequence)错误: 在寻找原因过程中发现相 ...
- 【从0開始Tornado建站】群聊
群聊的前台主要代码: {%block content%} <!--<p class='text-success h3'>測试版本号,每天凌晨4:00清水,enjoy it~~:-)& ...
- 如何在Eclipse中配置Tomcat(免安装版)
如何在Eclipse中配置Tomcat(免安装版) 2013-10-09 23:19wgelgrsh | 分类:JAVA相关 | 浏览642次 分享到: 2013-10-10 17:10提问者采纳 ...
- [LeetCode]题解(python):017-Letter Combinations of a Phone Number
题目来源: https://leetcode.com/problems/letter-combinations-of-a-phone-number/ 题意分析: 这道题是输入一段数字字符digits, ...
- 字符串-06. IP地址转换(20)
#include<iostream> #include<string> #include<cmath> using namespace std; int main( ...
- Ubuntu下配置修改IP地址
一.使用命令设置Ubuntu IP地址 1.修改配置文件blacklist.conf禁用IPV6:sudo vi /etc/modprobe.d/blacklist.conf 2.在文档最后添加 bl ...
- 转:requirejs打包压缩r.js使用示例
为了应对日益复杂,大规模的JavaScript开发.我们化整为零,化繁为简.将复杂的逻辑划分一个个小单元,各个击破.这时一个项目可能会有几十个甚至上百个JS文件,每个文件为一个模块单元.如果上线时都是 ...