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

Different QTP: GUI元素库:用Screen-Field解决复杂组合元素

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

GUI元素库:用Screen-Field解决复杂组合元素

有一些Client-Server模式的企业应用程序, GUI输入元素是非常复杂的, 不但一个Form里包含的输入元素多, 而且有很多组合类型。 比如下面的例子。(TODOresource select window

对于这种情况, 使用前面描述的CombinedElement方案并不合适。 从设计的角度, 这里有一个“代码复杂度”和“用户接口的简洁”的平衡问题。原因是CombinedElementElementQuery FormInput是耦合的,是你中有我, 我中有你的状态。 如果是小型的, 少量的且重复使用率高的CombinedElement 那么是合适的。 因为通过添加少量的代码就能把Combined Element集成到一个统一的框架里, 提供给调用者一个统一的接口。 但是要集成大量且复杂的Combined Element 那么结果就会是把GUI元素库代码搞得一团糟。

所以对于这种情况, 还是在GUI Element库的外面开发一个专门的框架比较好。这就是将要介绍的Screen-Field方案。

首先看一下定义。

Field

Field是一个逻辑上的Input单元。 它可以是基本Input元素, 也可以是自定义的组合元素。

一个Field可以被一个且仅有一个标识符定位( 同基本Input元素一样)。

一个Field可以被设置值。 对于基本Input元素,框架会调用GUI_GetElement来定位该元素。 对于组合元素, 每一个Field类型有一个对应的设置值的方法, 如下

'@param objContainer  a window that the field resides

'@param strMark       a string to identify a specific field    

'@param strVal        the value to be set

GUI_Field_FieldName_Set(objContainer, strMark, strVal)

 

Screen

Screen简单来说就是Field的集合。

每一个Screen都有一个名字, 还有一个对应的Screen配置文件, "screen"作为后缀名, 比如Login.screen Screen配置文件里定义了Field的类型。 比如

#in Login.screen

Login name=Edit

Password=Edit

%daylight savings%=On

Time zone=List

 

Screen支持SmartInput 所以基本Elemen无需自定类型。碰巧上面的Login.screen里所有元素都是基本元素, 也就是说里面可以是空的。 但这个文件还是必须要的。

           +-----------+           +------------+
           | Screen    | 1        1| xxx.screen |
           |           +---------->|------------|
           +-----+-----+           | field=type |
                1|                 |            |
                 |                 |            |
                 |                 |            |
                n|                 +------------+
           +-----v-----+
           |   Field   |
           +-----------+

Screen的接口函数如下
GUI_Screen_Set(objContainer, screenName, strValueMap)

Screen-Field library GUI element library的关系
    |-----------------------|
    |Screen-Field library   |
    |-----------------------|
                |
                | 
                |
      |---------V---------|
      |GUI Element Library|
      |-------------------|

 可见 Screen-Field library依赖于, 但不侵入GUI element library 所以无论有多少复杂的Field 都不会丝毫影响到GUI element library



TAG:

 

评分:0

我来说两句

Open Toolbar