3-UFT对象管理

3-UFT对象管理UFT对象的管理

大家好,又见面了,我是你们的朋友全栈君。

 

    基于GUI的自动化测试主要是围绕着界面的控件元素来进行的,例如文本框、列表框、控制按钮等等,软件用户通常都是通过这些控件与程序交互,因此,编辑测试脚本的第一步就是识别测试对象。

 

1、测试对象、运行时对象的区分以及对象库概念

    首先区分UFT中测试对象和运行时对象概念。

    测试对象:Test Object,TO,是UFT定义的一些类,用它们来代表被测应用的各种对象;

 

TO属性:

    获取对象的属性,可以理解为静态的属性,在运行时的输入东西与它无关。测试对象的属性是UFT为了识别在测试执行过程中的运行时对象而保留在对象库中的属性。

    GetToProperty/GetToProperties和SetToProperty则分别用于读取和修改To的属性值

    运行时对象:Runtime Object,RO,是实际的被测应用对象,是测试执行过程中,TO用来关联的对象;

 

RO属性:

    是变的(用户名框输入不同的值,这个Ro属性取出来就是不一样)

    GetRoProperty方法用于取得运行时对象(实际对象)的某个属性的值

    简单以登录操作中AgentName对象来说,to属性和运行时输入的东西无关,而ro属性是实际中被测应用对象,在测试执行过程中,会看到对应属性的变化:

3-UFT对象管理3-UFT对象管理


      UFT对象库:UFT中,使用对象库对对象进行管理。记录的对象和这些对象的属性,都存储在对象库中。而对象库也可以设置为共享对象库,供多个Action调用。当发现对象库中缺少某个对象时,可以使用对象抓取工具,单个抓取对象添加到对象库中。  

   3-UFT对象管理

 

2、对象库工具的一些操作

 
    1)对象识别器:Tools—–Object Identification

3-UFT对象管理

    2)对象嗅探器:Tools—-Object Spy

3-UFT对象管理

    打开如下的嗅探器窗口,点击下图方框中的按钮,移动手型的光标,可以看到下图中显示当前光标下的空间属性

3-UFT对象管理

3-UFT对象管理

 

    3)对象库:Resources—–Object Repository

3-UFT对象管理

    注意这里存储的除了测试对象,还有其他的对象类型,如下面的检查点。同样在对象库中,我们可以点击工具栏中的按钮,添加对象到对象库中;也可以高亮某个测试对象;,也可以使用对象嗅探器捕获测试对象;也可以关联其他的测试对象;

3-UFT对象管理

 

    4)对象库管理:Resources—-Object Repository Manager

    这里实际上共享对象库。在该对话框中,我们可以创建一个共享对象库、将对象库跟Action关联、添加对象到共享对象库中、保存一个共享对象库、修改共享对象库中的对象等。下面是新建一个共享的测试对象:

3-UFT对象管理

 

3、练习

    录制一个Flight程序登录的脚本。脚本要求:

  1. 使用Systemutil.Run打开程序
  2. 创建三个Action,分别是Login,NewOrder,Logout。在三个Action中分别录制对应的操作
  3. 保存NewOrder的本地对象库为NewOrder.tsr
  4. 删除NewOrder的本地对象库
  5. 将NewOrder的Action使用共享对象库(引用已保存的NewOrder.tsr),设置为共享对象库的路径为相对路径
  6. 使用自定义检查点,检查Price*Ticket的价格是否等于Total,并用If语句写出判断成功或是失败后的Reporter.ReportEvent报告语句
  7. 点击关闭,结束录制

    

补充知识点:

    1)可以使用Systemutil.run加上程序路径,使UFT自动打开被测程序

    2)在录制脚本的过程中,可以点击“录制工具条”中的新建Action按钮,将三个部分的操作放在三个Action中

    3)UFT的VBscript脚本中,使用Const声明定义常量,使用Dim声明定义变量

    4)报告语句,如果程序正确,则可以书写为Reporter.ReportEvent micPass,”结果正确”,”总价格正确”;如果程序不正确,可以使用Reporter.ReportEvent micFail,”结果错误”,”总价格计算错误”;



结果:

flight3.zip

NewOrder中代码:

'新建订单
Window("Flight Reservation").ActiveX("MaskEdBox").Type "121216"
Window("Flight Reservation").WinComboBox("Fly From:").Select "Denver"
Window("Flight Reservation").WinComboBox("Fly To:").Select "London"
Window("Flight Reservation").WinButton("FLIGHT").Click
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
Window("Flight Reservation").WinEdit("Name:").Set "jojo"
Window("Flight Reservation").WinEdit("Tickets:").SetSelection 0,1

Dim tiknum,price,total
tiknum=2


Window("Flight Reservation").WinEdit("Tickets:").Set tiknum
Window("Flight Reservation").WinRadioButton("First").Set
Window("Flight Reservation").WinButton("Insert Order").Click

Dim pricestr,totalstr
pricestr=mid(window("Flight Reservation").WinEdit("Price:").GetROProperty("text"),2)
price=CDBl(pricestr)
totalstr=mid(window("Flight Reservation").WinEdit("Total:").GetROProperty("text"),2)
total=CDBl(totalstr)

If (price*tiknum)=total Then
    Reporter.ReportEvent micPass,"结果正确","总价格正确"
Else
    Reporter.ReportEvent micFail,"结果错误","总价格计算错误"
End if

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140242.html原文链接:https://javaforall.net

(1)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql读写分离实现事务_Mysql读写分离后的事务ce「建议收藏」

    mysql读写分离实现事务_Mysql读写分离后的事务ce「建议收藏」1.概述很多人会有这样的疑问,mysql读写分离后,我的事务怎么处理呢。不是说mysql不支持跨库事务吗?那我引入mycat这个中间件后事务是否是安全的呢,它是怎么运作的呢。今天我们就来实验一下2.设置首先设置事务锁的过期时间是5innodb_lock_wait_timeout=5意思是前面有人已经锁定这一行准备更新了,而你现在又去更新这行,那你只能等,等5秒。前面的人还没进行事务提交,那…

    2022年5月2日
    149
  • pytorch之nn.Conv1d详解

    pytorch之nn.Conv1d详解之前学习pytorch用于文本分类的时候,用到了一维卷积,花了点时间了解其中的原理,看网上也没有详细解释的博客,所以就记录一下。Conv1dclasstorch.nn.Conv1d(in_channels,out_channels,kernel_size,stride=1,padding=0,dilation=1,groups=1,bias=True)in_channe…

    2022年6月12日
    109
  • python dll注入监听_DLL注入和API拦截

    python dll注入监听_DLL注入和API拦截读《Windows核心编程》笔记一DLL注入和API拦截在Windows中,每个进程相互独立,都有自己的私有的地址空间,程序中使用的指针都是进程自己地址空间的一个内存地址,无法创建也没法使用其他进程的指针。这种机制使得各个进程之间不会相互影响,万一自己出现了问题,也不会影响到其他的进程。对用户来说,系统更加的稳定了,但是对于开发人员来说,会使我们很难编写能够与其他进程通信的应用程序或对其他进程进…

    2022年5月16日
    46
  • Android listView中的button点击事件[通俗易懂]

    Android listView中的button点击事件[通俗易懂]Android–listView中的button控件获取item的值在listview中的listitem设置事件响应,如果listitem中有button控件,这时候listitem就不会捕获到点击事件,而默认的是listitem中的button会捕获点击事件,这方面的介绍网上很多,我想大家应该很熟悉了,之前做项目开发的时候遇到了一个问题,就是如果我点击listitem中的button怎么才能这个button是在哪一个item中呢,换句话说,就是点击listitem中的button怎么获取该list

    2022年7月17日
    24
  • phpstorm激活码2021-激活码分享

    (phpstorm激活码2021)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月22日
    51
  • android 泰国/缅甸语/捷克较低,Contacts联系出现精神错乱之类的问题清单[通俗易懂]

    android 泰国/缅甸语/捷克较低,Contacts联系出现精神错乱之类的问题清单

    2022年1月16日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号