您的位置:首页 > 编程语言 > Qt开发

使用QTP录制使用extjs框架的web

2014-03-03 11:34 288 查看
近来使用QTP录制使用extjs框架编写的web软件,遇到诸多问题,而google上资料甚少,所以把一些心得总结于此。

extjs的页面对象会用很多WebElement替代link,button等传统html对象。这样虽然让整个web页面做的仿windows操作系统,但给qtp自动化测试的介入带来了不少问题。闲话不多说,直入主题。

假设页面有两个图标,名称分别为图标1和图标2,点击分别可以打开列表1和列表2

点击页面两个图标的录制结果

Browser("mike").Page("mike").WebElement("WebElement").FireEvent"onmouseover"

Browser("mike").Page("mike").WebElement("WebElement").Click

Browser("mike").Page("mike").WebElement("WebElement_2").FireEvent"onmouseover"

Browser("mike").Page("mike").WebElement("WebElement_2").Click

上面4行vbs代码,用qtp回放,qtp是很难找到目标图标的,因为WebElement参数值始终随着页面的变化而动态变化。希望qtp能够按希望找到2个图标解决办法如下。

1.使用关键字驱动

进入resources->Object Repository,将WebElement重命名为图标1,WebElement_2重命名为图标2,发现代码变为

Browser("mike").Page("mike").WebElement("图标1").FireEvent"onmouseover"

Browser("mike").Page("mike").WebElement("图标1").Click

Browser("mike").Page("mike").WebElement("图标2").FireEvent"onmouseover"

Browser("mike").Page("mike").WebElement("图标2").Click

回放脚本,发现qtp可以找到图标并且点击成功。

如果图标1和图标2的名称为空,那这两个图标成为无依无靠的webelement。那必须使用第二种办法

2.描述性编程

使用object spy将两个图标加入对象库,会发现这两个webelement的父节点为page("mike")并且图标有很多属性值,其中的大部分属性值会因为extjs或者web页面的变化而变化。找到其中不变的属性,使用描述性编程关联到该两个图标。代码如下

Set MyDescription =Description.Create() '创建对象描述,包括属性名和属性值

MyDescription("micclass").Value="WebElement" '属性名为micclass,属性值为WebElement

MyDescription("@属性名").Value="@属性值" '不变的属性值和属性名来区分其他的WebElement

Set MyChildObject = Browser("mike").Page("mike").ChildObjects(MyDescription) '将WebElement作为Page("mike")的子节点

msgBox MyChildObject.Count '弹出窗显示子节点个数

ChildObjectsCount = MyChildObject.Count '循环点击每个WebElement

For Counter=ChildObjectsCount-1 to 0 step -1

MyChildObject(Counter).Click

Next

extjs的WebElement对象有它的类属性是micclass,使用该语句可以找到页面所有的WebElement。

使用方法2,可以减少使用object spy的繁琐步骤,并且代码的可移植性和重用性较强。该方法一般适用于页面上没有name的对象,比如关闭按钮,翻页按钮等等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: