概述
最近一段时间,负责调试QTP不能跑通的一些问题,对一些比较通用的处理办法,作出一些总结。
我们都知道,QTP是可以通过模拟用户操作,然后进行脚本的录制的。但是,他总是不尽如人意,或多或少就会出现问题,其实这些问题中的大部分,都可以通过对脚本的简单调整,来解决,下面就一一详细说明。
QTP中的对象
首先,QTP中的对象,可以分为录制阶段的和识别阶段的。录制时,由相关的录制引擎负责识别,记录对象。识别时,有相应的识别引擎。所以,我们经常会碰到录制的时候可以识别,但是回放的时候,就不能回放的现象,就是因为这里是分开的2个引擎导致。
其次,QTP中的对象,都有其元数据(可以看做编程中类的概念),这些元数据可以在QTP工具的这个位置找到并查看(Tools->Object
Identification).
(1)Enviroment:环境,如html的,或者flex的,或者其他桌面环境
(2)Test Object
classes:环境下相应的元数据,如WebEdit就代表html中的input输入框,而相应的页面中的某个具体的输入框,则为此数据的一个实例(类与实例的关系)
(3)右侧为相应元数据在识别时的属性值,优先级排序为:
Mandatory properties>assistive properties>smart
identification>ordinal identifier.如果一个元素不能识别,则增加其作为标识的属性即可
实战QTP的对象
就像学编程时候的hello world一样,我们在自动化测试的录制时,也以登陆的过程为例,进行录制。简单录制脚本如下:
Browser("新建选项卡").Page("登陆").WebEdit("username").Click
Browser("新建选项卡").Page("登陆").WebEdit("username").Set
"root"
Browser("新建选项卡").Page("登陆").WebEdit("password").Click
Browser("新建选项卡").Page("登陆").WebEdit("password").SetSecure
"4f5db9bf846984f5bc56bf49"
Browser("新建选项卡").Page("登陆").Link("登录").Click
其中:
(1)
Browser("新建选项卡")和Page("登陆")和WebEdit("username"),都是相应的类的实例,最后的Click为WebEdit的方法(ps:这里插一句,内置对象的方法,可以扩展,这里需要大家自己去探究,这里不详解)
(2) 第二行的set “root”,也为调用set方法,而root为set的参数,这里也可以写为Set(“root”),空格为一种简便写法,同时,当方法必须传值时,必须为括号的方法调用格式
实际问题1:机构用户管理的机构树,点击+号不能录制
问题描述:
在实际录制中,发现机构用户管理下的机构用户树,点击+号展开用户的操作,无法录制,不能识别这个动作
问题解决:
(1)使用object spy,发现该对象可以识别,但是录制时,就是不能产生对应的脚本。进一步测试,发现+号右边的文件夹图标可以点击,决定使用脚本来试一下。在QTP中,点击工具条的这个图标,然后点击添加对象,添加相应的+号位置对象到对象库中,并且在脚本中加入如下语句:
Browser("XX数据平台").Page("XX数据平台").Frame("leftTree").WebElement("WebElement_2").Click
其中WebElement_2为刚才添加的对象的名字。
进行完以上以后,我们点击run
,测试下刚才的修改。测试后会发现,+号能被点击,但是识别过程很慢,原因是启动了QTP的智能识别,会导致对象识别时间加长,这显然不是我们想要的,进一步优化这个对象的识别过程。
(2) 首先来分析下,为什么对象不能被立即识别,而非得启动智能识别。首先,QTP对对象的识别,是一种称之为描述性编程(description
programing)的东西,它根据对象的属性描述,来进行对象的甄别。有了这个知识,我们就继续往下分析,我们点击打开对象库面板,点击WebElement_2元素,其对象图如下,在右侧的Test Object details下面是这个对象的所有要被识别的属性,我们发现,其重要属性(description
properties),下面只有2个值,这2个值在页面进行匹配时,有点儿过于模糊,所以根本无法对对象进行寻找,只有交给优先级稍低的智能识别,那么我们怎么来解决呢
在我们之前提到的元数据中,找到webelement,点击右边Mandatory
properties下面的add/remove按钮,添加一个他的属性class,然后我们再重新识别+号,并修改脚本中,此次识别到的对象名称,然后再测试,发现这次一下就识别到了,收工
实际问题2:能录制,但是回放时报对象找不到之类的错误
问题描述:
录制新建数据集->简单SQL时,有个选取模式和表名的过程,这里用的通用组件的下拉列表,录制时没有问题,动作都可以识别,但是回放时,会报下拉列表中的选项对象找不到
问题解决:
首先要明确,录制可以识别,回放找不到时,那么90%是因为录制时,对象的信息不够全,可以通过给对象添加更明确的属性,来让QTP回放引擎,快速寻找对象。本例不通过此办法,而通过另一个,更应该学会的办法来解决这个问题—通过元素的id属性,唯一确定元素。
脚本如下
Browser("新建数据集").Page("无标题文档").Frame("11").WebElement("html
id:=rqdataDiv_schema_全部").Click
其中的 WebElement("html
id:=rqdataDiv_schema_全部")的含义为找到id为rqdataDiv_schema_全部的webelement元素(span或者div),那么,只要在页面知道的元素的id,就可以在QTP中直接定位元素,非常方便
开发与测试的配合,开发可测试的应用程序
通过以上问题的分析,我们发现,QTP脚本的录制,与开发出来的程序的可测试性,密切相关,所以,在开发过程中,应该积极与测试相配合,开发具有高可测试性的程序,其中以下几点需重点对待
(1) 使用W3C的标准标签,以便在QTP的对象库中能够找到其原型
(2) 重要的页面元素,必须有自己的唯一标识,例如加ID属性,title属性,name属性等
分享到:
相关推荐
### 通过自定义对象来操作一些QTP录制脚本无法驱动的对象 在自动化测试领域,尤其是Web应用测试中,QTP(Quick Test Professional)作为一款经典的自动化测试工具被广泛使用。然而,在实际测试过程中,可能会遇到...
### QTP 文件处理脚本知识点解析 #### 一、前言 在自动化测试领域中,QTP(Quick Test Professional)是一款强大的工具,被广泛应用于功能和回归测试之中。本文将详细解析一个关于QTP文件处理脚本的具体实现,旨在...
QTP,现称为 UFT (Unified Functional Testing),是HP(现为Micro Focus)开发的一种功能自动化测试工具,广泛应用于Web、桌面应用及移动应用的自动化测试。这个脚本的目的是批量检查链接的有效性,确保应用程序中的...
#### 一、QTP简介及应用领域 QTP,即QuickTest Professional,是HP(现为Micro Focus)开发的一款自动化测试工具,主要用于功能性和回归性测试。它支持多种应用程序,如Web、Java、.NET、Flex、Silverlight等,通过...
【QTP测试脚本项目实例】是一个针对自动化测试工具QuickTest Professional(QTP,现在被称为UFT,Unified Functional Testing)的实践项目,旨在帮助学习者深入理解和应用QTP进行功能测试自动化。QTP是一款由HP(现...
1. **属性匹配**:补丁可能优化了QTP对WPF对象属性的解析,确保测试脚本能通过更多的属性来定位对象。 2. **事件驱动识别**:可能引入了更先进的事件监听机制,允许测试脚本根据对象的动态行为进行识别。 3. **深度...
4. **持续集成**:QTP脚本可以集成到持续集成环境中,每次代码提交后自动运行测试,确保产品质量。 5. **团队协作**:QTP支持版本控制和团队共享,多人协作完成大型测试项目。 四、学习与提升 对于想要深入掌握...
2. 文件数量过多:一个简单的QTP脚本就包含多个文件,Action的增多导致文件数呈正比增长,增加了维护和管理的复杂性。 解决方案: 1. 使用VBS Function替代QTP Action:通过VBS Function实现脚本的加载和调用,减少...
本文将详细解析QTP的安装目录结构,帮助用户更好地理解和管理该软件。 首先,QTP的安装目录通常包含以下几个关键部分: 1. **Bin** 文件夹:这是QTP的核心组件所在的位置,包含了QTP的可执行文件,如`qtp.exe`,...
- `VCTE_L207_QTP_Theory05_v1[1].0.doc`:可能讲解QTP的高级功能,如错误处理、对象间关联、脚本调试等。 5. **学习建议** - 系统学习每个文档的内容,理解QTP的核心概念和技术。 - 实践操作,通过录制和回放...
QTP通过对象库来识别并操作这些对象,这使得测试脚本能够精确地模拟用户操作。智能识别技术则允许QTP自动适应界面变化,增强了测试脚本的稳定性和可维护性。 其次,QTP8.0提供了强大的录制和回放功能。用户可以通过...
- **定义**: 描述性编程是一种让 QTP 脚本能够脱离对象库直接执行的技术。这种方式增强了脚本的灵活性和可移植性。 - **应用场景**: 当需要针对特定对象进行参数化或在不同环境中复用脚本时特别有用。 - **优势**: ...
### QTP面试题及学习知识点解析 #### 一、QTP概述 QTP(Quick Test Professional)是一款由Mercury Interactive开发的功能性测试工具,后被HP收购并更名为UFT(Unified Functional Testing)。QTP主要用于自动化...
2. **智能识别对象**:通过“Object Spy”和“Object Repository”功能,QTP能够智能识别并记录界面元素,简化了测试脚本的编写过程。 3. **脚本语言支持**:QTP内置了VBScript脚本语言,并支持其他脚本语言扩展,...
《QTP技术集锦》深度解析 一、QTP描述性编程:自动化测试的新维度 在《QTP技术集锦》中,描述性编程作为QTP(QuickTest Professional)的一个重要特性被详尽阐述。描述性编程允许测试脚本直接引用对象属性,而不必...
该教程主要涵盖QTP的基本操作、测试流程设计、测试对象管理、测试脚本创建与优化等核心内容。 #### 二、QTP软件测试流程 QTP的测试流程涉及以下几个关键步骤: 1. **启动测试流程**:这包括软件的初始化和配置,...
描述性编程是QTP中的一项重要技术,使得测试脚本可以独立于对象库进行编写,增强了脚本的灵活性和可移植性。 1. **描述性编程**:描述性编程允许测试人员在脚本中直接定义对象的属性,而无需依赖对象库。这种技术...