修改测试对象的属性值(SetTOProperty Method )与Run-time对象的属性值的区别(一)

上一篇 / 下一篇  2007-05-15 15:41:40 / 个人分类:QTP学习

通过SetTOProperty方法,可以修改测试对象(指对象仓库中的对象)的属性值;测试对象还有一个“Properties”,叫Object,通过它,可以修改Run-time对象(指应用程序中的对象)的属性值。参考下图。

以下面的一个WebElement对象为例,介绍二者的区别:

上面的那个控件,无法通过正常录制的方法捕捉到,同时也无法录制键盘输入文字的操作。

现在希望能通过脚本,自动完成文字录入操作,只能通过手工的方法,先将对象加入到对象库中,然后手工添加脚本代码。

将对象加入到对象库中的操作如下(QTP9.0):

(1).            菜单中选择Resouces>Object Repository,打开对象仓库管理器。

(2).            点击按钮,将对象加入到仓库中,如图下图1。对象ClassWebElement

(3).            将对象的Enable Smart Identification值设置为False,如图2

从上图可以看出,程序中该控件的输入内容全部可在“innertext”属性值中显示。因此应该可以通过修改innertext值,来模拟用户的文本输入操作。

我们可以先了解一下WebElement测试对象的属性,如下图。

上图中的属性值都可以通过测试通过的Settoproperty进行修改。如果在脚本中用SetToProperty对测试对象的属性值进行了修改,是不会真正改变对象仓库中对象的属性值的,只是一个临时的修改,测试运行时生效,运行结果后即结束它的使命,不对仓库中的对象属性产生任何影响。

例如:

Browser("测试").Page("测试").Frame("Frame").WebElement("测试对象").SetTOProperty"innerText","好好学习"

下面再介绍WebElementRun-Time属性。通过Object Spy的方法,获取得该对象的Run-time属性如下图1

通过“测试对象.object”的方法,可以修改Run-time的属性值,即修改程序中对象的属性值。从上图1中可以看到,WebElement有一个“innerText”属性,它的属性值也就是在程序中输入的文本内容。因此,如果使用“测试对象.object”的方法对innerText属性值进行修改,也就相当于在程序中手工输入了文本。

了解了WebElement的测试对象属性与Run-Time属性后,现在尝试进行脚本的编写。

首先,对程序(如图1)使用SetTOProperty方法建立脚本,如图2。(注:第1个语句用来检查测试对象属性值修改前,是否可以从程序中找到对象;第3个语句用来检测对象属性值修改后,是否还可以从程序中找到对象。

运行后,测试结果如下图3

从图3可以看出,第1行脚本的点击事件通过,表示在程序中找到了对象,但在运行至第3行脚本的点击事件时出现错误,因为无法找到测试对象。由此表示如果对对象库中的对象属性进行了修改,会导致测试时无法从程序中找到对象。

图1

图2

图3

 

现在将程序中的文本也相应的改为“好好学习”。如下图1,注释第1行脚本,如图2,再次运行脚本,结果如下图3

从图中可以看出,脚本运行是成功的。由此可见,如果对测试对象的属性值进行了修改,并在程序中对Run-time对象的属性值进行了相应的修改,这样保持了对象仓库中测试对象的属性与程序中Run-time对象属性的一致性,在这种情况下,脚本就可以运行成功。

上面的脚本实验同样也表时,无法通过SetToProperty方法来模拟用户输入,因为它只能改变测试对象的属性值,不能自动改变Run-Time对象的属性值。相反的,如果改变了测试对象的属性值,不在程序中对Run-time属性值进行修改的话,还会导致脚本运行时找不到对象。

图1

图2

图3


TAG: QTP学习

引用 删除 edison1256   /   2009-12-29 10:49:34
5
 

评分:0

我来说两句

Open Toolbar