发布新日志

  • GetTOProperty、GetROProperty、GetTOProperties的区别(总结网上的)

    2007-07-10 11:14:23

        GetTOPropertyGetROProperty都用于取出对象的某个具体属性的值,它们的语法和用法几近相同,唯一的区别就是GetTOProperty取出的是录制对象的属性值,GetROProperty取出的是在回放过程中运行的对象的属性值.

     

    GetTOProperties,是指取出录制对象的所有属性。

     

    GetTOPropertyGetROProperty语法都是:

    object.GetTOProperty(Property)

    或者是:

    object.GetROProperty(Property)

    其中Property,对象的属性,是必填项

     

    GetTOProperties的语法为:

    object. GetTOProperties

     

    实例:

     Dialog("Login").Activate

    Dialog("Login").WinEdit("Agent Name:").Set "training"

    Dialog("Login").WinEdit("Agent Name:").Type  micTab

    Dialog("Login").WinEdit("Password:").SetSecure "429376f06698f739df8bb1c09eab3d78dee316f7"

    Set TableDesc = Dialog("Login").WinEdit("Password:").GetTOProperties

    Properties=TableDesc.Count

    reporter.ReportEvent micdone,"属性数目",Properties

     If Dialog("Login").WinEdit("Password:").GetROProperty("attached text")="Password:" then

          reporter.ReportEvent micdone,"name控件","存在"

    else

         reporter.ReportEvent micdone,"name控件","不存在"

    end if

      If Dialog("Login").WinEdit("Password:").GetTOProperty("attached text")="Password:" then

         reporter.ReportEvent micdone,"name控件2","存在"

      end  if

    Dialog("Login").WinButton("OK").Click

    'did the flight reservation window appear?

    Window("Flight Reservation").Check CheckPoint("Flight Reservation")

    Set Mydes=Descrīption.Create()

    Mydes("attached text").value="Name:"

    Mydes("nativeclass").value="Edit"

    Set winedites=Window("Flight Reservation").ChildObjects(Mydes)

    NoOfChildObjs =winedites.Count

    For Counter=0 to NoOfChildObjs-1

    if(Counter=0) then
           winedites(Counter).Set "ON"

      end if

    Next

     

    为了便于记忆,有人给出了这样的说法,感觉很不错,共享给大家:

     

    TO是仓库文件里的仓库对象,RO是被测软件的实际测试对象,两者是不同的对象,是独立的。

    QTP是通过TO来寻找和操作RO的,所以TO里必须含有RO的特征,这是两者相似的地方。

    TO的属性可以在录制时抓取RO的特征属性得来,也可以在脚本运行时通过SetTOProperty来随意更改,通过GetTOProperty来读取。

    RO的属性可以通过GetROProperty来读取。没有SetROProperty,要修改RO属性,只能通过对象具体的Method。

    TO的属性值和对应RO的属性值并不一定相同,TO的属性值可以包含通配符和多种可能的RO属性值。
    如Cancel按钮,为了同时匹配中英文,它的TO属性值为"Cancel|取消",它的RO属性值则是确定唯一的,或者为"Cancel",或者为"取消"。

     

    另外,除了这里讲了GetTOPropertyGetROProperty还有GetTOProperties,还想对上面代码中另外一个说明一下,就是ChildObjects方法,将所有符合Descrīption对象描述的特征的那些对象从Window("Flight Reservation").里面取出来,赋值给winedites,于是winedites就有了一个count属性,存储的是满足这个对象描述的对象的个数,于是,你想遍历每个对象的话,就可以用循环进行遍历了。

     

  • QTP教程学习心得

    2007-07-05 21:22:28

       今天看了一遍QTP的教程,看的是在网上流传甚广的一个翻译版本,不过我也想提出点自己的看法。主要原因是我在看的过程中,按照这个中文教程的指导一一操作,确实出现了问题,最后经过自己的调试和思考,问题解决了,所以在这里想提三点注意的地方,不然的话,就出错,也给刚刚看教程的人一个指导,如果你也遇到这些问题了,下面的处理办法也许可行:

    1、在建立检点的地方,有一个是让对First name edit box建立标准检查点

       对于这个,它的文字介绍中前面的都没有问题,只是在一个对话框(checkpoint properties)中的最下面有个insert statement选项,文章中没有提到应该选择after current step,默认的选项是before current step,如果不改,按照教程中的选项,确实能够和它接下来的文字说明“在你所选的步骤之前建立一个标准检查点”相一致,但是和文中附图就不一致了,其实应该和图中的一致,其实是在选的步骤之后加一个检查点,这样在调试的时候才能不出错。所以那个选项一定要选“在当前步骤之后”。其实这样道理上也讲得通,只有前面你输入值,后面才去检查,这样就对了,不然在步骤之前去检查,还没有输入到编辑框中就去检查,肯定检查不出来了,要报错的。

    2、关于参数化

      其实参数化是没有问题的,但是有个问题要注意的,不然是报错,还不知道哪里原因。按照教程里一一操作,参数化步骤也是没有问题的,就是在回放的时候,它要求将出发城市参数化,并且提供了三个值到DATA Table里,分别是New York,Portland和Seattle,但当运行脚本的时候,第一次迭代是顺利和pass的,但是到第二次迭代的时候,总是一输入用户名和密码页面之后,似乎出现的网页不是应该出现的,而且这时候会报一个找不见对象的错误。

       这个问题的解决方法就是将录制的脚本的最后一行删除就OK 了,不然的话,一直都是这个错误。

    3、在第9章有个小细节,要新建一个空白脚本ActionB,插入呼叫动作那里

      我要说的是,在这里,它首先是在ActionB脚本中插入呼叫的Sign in和ReturnHome脚本

    要注意,在插入Sign in 的时候,在一个Select Action对话框中,有个Location选项,需要选择At the end of the test,默认选项是After the current step.如果你采用默认选项时,这时候看不出来有错,等将ReturnHome和Copy of FlightOrder都call 到ActionB或者是Copy到ActionB中以后,有个要删除预设的Action1的时候,删除以后,运行就会出错,而且我个人感觉他在说这三个Action的顺序的时候,说的有点乱,其实只要你选择这个选项以后,按照它的操作顺序,完了以后,在你去调整他们的顺序之前,他们的顺序是这样的,Sign in然后是ReturnHome然后是Copy of FlightOrder,所以只要你拖动Copy of FlightOrder到ReturnHome前面就OK 了,运行是没有问题的。在你选择这个选项和不选择这个选项两种情况下,等你删除预设的Action1之后,他们的层次关系是不同的,请仔细查看。

      本文就说这么多,不知道说清除了没有,只当是一个学习笔记吧,说不定什么时候自己也忘记了,可以再过来看看。

Open Toolbar