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

Different QTP: GUI元素库:标识符匹配的规则

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

GUI元素库:标识符匹配的规则

GUI 元素查找函数库提供了一个入口函数,

 GUI_Html_FindElement(objContainer, strMark, xtypye)

这个函数的参数strMark是一个字符串, 在查找时用来匹配元素的某一个属性。 说到“匹配”, 我们马上会想到“相等”, 这是最常用的一种匹配。如果为了提供更大的灵活性, 还应该支持“正则表达式”匹配。 实践表明, 在“相等”和“正则表达式”之间, 还有一种常用的匹配关系“包含”。”包含“关系匹配的好处是你可以只指定关键字, 而又不需要写稍微复杂的正则表达式。

比如你想匹配一个页面抛出的错误信息.

<div class="Error">Error: invalid user name. user name shouldn't contain special characters like "#/' ...</div>

对你来说, 你其实只是想确定页面错误信息里有“invalid user name”就可以了, 那么这里就会用到“包含”关系的匹配。

Set bjErrDiv = GUI_Html_FindElement(objContainer, "<DIV>%invalid username%", "WebElement")

稍微解释一下strMark 因为这里xtype指定的是WebElement 对于这种类型, 底层查找函数是GUI_Html_FindByTextAndTag(objContainer, strText, strTag, xtype) 但是这里有一个问题是, 如何通过strMark一个字符串来表达strTextstrTag两个内容。 这里就设计了"<tagName>innerText"这样一种表达形式。

为了支持以上三种匹配关系, 而且代码书写方式还要自然, 高效。 我定义了下面的规则

·         如果strMark是“/.../”的形式,那么表示用正则表达式匹配

·         如果strMark是“%...%“的形式, 那么表示用“包含”匹配

·         如果strMark不是上面两种形式之一, 那么表示用”相等“匹配

通过匹配规则的扩展, 查找函数库的调用者获得了更大的查找对象的能力, 同时几乎没有增加额外的负担。

额外说明

有些查找方法不支持正则表达式匹配或者”包含“匹配, 比如从object  repository查找元素。 这些限制应该在接口文档里明确的指出。


TAG:

 

评分:0

我来说两句

Open Toolbar