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 ...
随机推荐
- USB VID PID 查询
USB VID PID 查询:http://www.linux-usb.org/usb.ids 说明: USB设备中有VID何PID,分别表示此USB设备是哪个厂商的哪种设备. 一个USB的VID对应 ...
- ThinkPHP 3.1.2 视图-1
一.模板的使用 (重点) a.规则 模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和模块名同名的文件夹[Index]/和方法名同名的文件 [index].html(.tpl) 更换模板文 ...
- mahout贝叶斯算法开发思路(拓展篇)1
首先说明一点,此篇blog解决的问题是就下面的数据如何应用mahout中的贝叶斯算法?(这个问题是在上篇(...完结篇)blog最后留的问题,如果想直接使用该工具,可以在mahout贝叶斯算法拓展下载 ...
- 总结一下ASP.NET MVC 网站的部署问题
总结一下ASP.NET MVC 网站的部署问题 近日,准备把MVC建了一个新的测试站点部署到IIS上面,结果没想到出现了一系列的问题和错误,准备记录一下. 第一个问题,就是如何将MVC的站点部署到II ...
- java反射机制入门04
需要jxl.jar package com.rainmer.main; import java.io.File; import java.io.IOException; import java.uti ...
- BZOJ 1572: [Usaco2009 Open]工作安排Job( 贪心 )
贪心... 按截止时间排序 , 然后从小到大考虑 . 假设当前考虑第 i 个任务 , 若目前已选工作数 < D_i , 那就选 i ; 否则 若已选工作中利润最小的比 P_i 小 , 那就去除它 ...
- chown命令详解
chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID:组可以是组名或者组ID:文件是以空格分开的要改变权限的文件列表,支持通配符.系统管理员经常使用chown命令,在将文件拷贝 ...
- linux下出现java.net.UnknownHostException
项目部署在win环境下没问题,但是在迁移生产环境的时候出现Java.net.UnknowHostException 原因在于etc/hosts 文件没有配置域名映射,使用vi编辑器加上服务器ip 以及 ...
- Python网络编程——设定并获取默认的套接字超时时间
Sometimes,you need to manipulate the default values of certain properties of a socket library, for e ...
- [LeetCode]题解(python):026-Remove Duplicates from Sorted Array
题目来源: https://leetcode.com/problems/remove-duplicates-from-sorted-array/ 题意分析: 给定一个排好序的数组,去除重复的数,返回新 ...