Hi, 如果有任何想法与我沟通, 请用: lifr_nj 在 msn.com
Different QTP: GUI元素库:组合元素
上一篇 /
下一篇 2012-08-26 22:10:58
/ 个人分类:QTP
GUI元素库:组合元素
前面介绍的都是QTP提供的基本元素的查找和操作。对于一个软件产品,经常会看到这样一种情况, 页面上的几个基本输入元素在逻辑上是一个输入元素。比如下面的例子。
三个基本输入元素,一个WebEdit,两个WebList构成了一个逻辑上的“时间输入控件”。这种控件,我叫他“组合元素”。
对于这些组合元素,在framework里不做特殊处理是可以的,前提是每一个基本元素都能方便的识别出来。但实际往往并不如此乐观,比如页面开发人员为了使得组合元素更像一个整体,他们结合得都比较紧密,以至于没有一个“可见的标识”来标识其中的某一个基本元素,比如上面例子中的Minute输入list。
用Class来封装
这种情况,就需要针对组合元素来做专门的封装。在封装组合元素时使用到了VBS里的Class。VBS对面向对象支持是相当之弱,这也是framework里仅有的使用Class的地方。对于封装组合元素的Class,有下面的接口定义。以上图为例。
Class DateTimeInput
Function Init(objContainer, strMark)
Function Exist(nSec)
Function SetValue(strVal)
Function Value()
End Class
' CombinedInput的工厂函数,负责创建CombinateInput实例
Function GUI_CombinedInput_Create(xtype,
objContainer, strMark)
对于DateTimeInput组合元素,starMark是第一个Edit的Label,也就是“Begin-Date”或者“End-Date”。基本算法是,找到第一个WebEdit,然后向上找到TR,然后在到TR的第二个TD里的两个WebList就分别是Hour和Minute。
CombinedInput与GUIElementQuery的集成
一个很自然的想法是把CombinedInput与GUIElementQuery结合起来。在实践中,我也是这样做的。但是更进一步,把CombinedInput集成进SmartInput是不可以的。因为这会把SmartInput弄糊涂,它没法判断一个基本Element到底是独立的一个还是属于某一个CombinedInput。那也就是说FormInput里对CombinedInput是必须指定类型的。
收藏
举报
TAG: