Hi, 如果有任何想法与我沟通, 请用: lifr_nj 在 msn.com

Different QTP: GUI元素库:组合元素

上一篇 / 下一篇  2012-08-26 22:10:58 / 个人分类:QTP

GUI元素库:组合元素

前面介绍的都是QTP提供的基本元素的查找和操作。对于一个软件产品,经常会看到这样一种情况, 页面上的几个基本输入元素在逻辑上是一个输入元素。比如下面的例子。

三个基本输入元素,一个WebEdit两个WebList构成了一个逻辑上的“时间输入控件”。这种控件,我叫他“组合元素”。

对于这些组合元素,framework里不做特殊处理是可以的,前提是每一个基本元素都能方便的识别出来。但实际往往并不如此乐观,比如页面开发人员为了使得组合元素更像一个整体,他们结合得都比较紧密,以至于没有一个“可见的标识”来标识其中的某一个基本元素,比如上面例子中的Minute输入list

Class来封装

这种情况,就需要针对组合元素来做专门的封装。在封装组合元素时使用到了VBS里的ClassVBS对面向对象支持是相当之弱,这也是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是第一个EditLabel也就是“Begin-Date”或者“End-Date”。基本算法是,找到第一个WebEdit然后向上找到TR然后在到TR的第二个TD里的两个WebList就分别是HourMinute

CombinedInputGUIElementQuery的集成

一个很自然的想法是把CombinedInputGUIElementQuery结合起来。在实践中,我也是这样做的。但是更进一步,CombinedInput集成进SmartInput是不可以的。因为这会把SmartInput弄糊涂,它没法判断一个基本Element到底是独立的一个还是属于某一个CombinedInput那也就是说FormInput里对CombinedInput是必须指定类型的。


TAG:

 

评分:0

我来说两句

Open Toolbar