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 ...
随机推荐
- MSSQL SERVER 2008 R2 无法连接到数据库,用户sa登录失败,错误:18456
原因:勾选了强制实施密码策略,但是设置的密码很简单依然可以,比如:123456 这是为什么?原来,这个功能要用到NetValidatePasswordPolicy() API这个函数. (该功能只有在 ...
- sed(查找替换) 与awk(提取字段)
通常: sed 处理列 awk处理行 比较方便 Sed是一个基本的查找替换程序 sed -i "s/^@//g" 文件 #原地操作原文件,进行替换 cat ...
- [HDU 3336]Count the String[kmp][DP]
题意: 求一个字符串的所有前缀串的匹配次数之和. 思路: 首先仔细思考: 前缀串匹配. n个位置, 以每一个位置为结尾, 就可以得到对应的一个前缀串. 对于一个前缀串, 我们需要计算它的匹配次数. k ...
- live555 RTSP服务器建立及消息处理流程
DynamicRTSPServer::creatnew(): 1.调用继承自RTPSever::setUpOurSocket: 1.调用 GroupsockHelper 的 set ...
- 中国天气网API
中国天气网有三个 API 适用于不同场合的使用. http://m.weather.com.cn/data/101050101.html 这个接口返回的格式如下. { "weatherinf ...
- oracle 中的select ...connect by prior ...start with 及(+)的用法
1.select ...connect by prior ...start with的用法: select ... from <tablename> where <condition ...
- Android 中文API (69) —— BluetoothAdapter[蓝牙]
前言 本章内容是 android.bluetooth.BluetoothAdapter,为Android蓝牙部分的章节翻译.本地蓝牙设备的适配类,所有的蓝牙操作都要通过该类完成.版本为 Androi ...
- 《JavaScript权威指南》拾遗(上)
一.语言基础 1.javascript中,只有null和undefined是无法拥有方法的值,它们都没有包装对象.typeof null == ‘object' , typeof un ...
- Python 2.7 学习笔记 中文处理
首先我们在编写python代码文件时,文件本身会采用一种编码格式,如 utf-8 或 gbk 这时我们需要在python文件的开头设置文件的编码格式,以告诉编译器. 如果文件的编码格式是 utf-8, ...
- HDU_1003Max Sum 简单动归
以前做过这道题目,那是还不懂状态方程.乱搞一气: #include<cstdio> #include<algorithm> using namespace std; +; in ...