创建自动化测试是为了实现无人值守下运行,但也给开发人员带来一些问题。假如你离开办公室前启动测试,想要让它通宵运行。然而,由于不可预见的错误,您的测试会在某一点停止,中断了测试结果。因此QTP中引入场景恢复方案。测试运行错误"列表或菜单中找不到选项",可参考以下场景恢复方案。

  本文讨论了当"列表或菜单中找不到选项"时如何创建场景恢复方案。
  此例中,我们会定义一个函数来处理错误。场景恢复函数的默认语法如下:
Function fnRecovery(Object, Method, Arguments, retVal)
'Error Handling Code
End Function
  下面给出fnRecovery 中每个参数的解释:
Object as Object: The object of the current step. '当前步骤的对象
Method as String: The method of the current step. '当前步骤的方法
Arguments as Array: The actual method's arguments. '方法的实参
Result as Integer: The actual method's result. '方法的实际结果

  我们使用以下函数处理报错场景:

Function Recovery_ListItemIsNotFound(Object, Method, Arguments, retVal)
Dim sAllItems, arrAllItems, intItem With Object
'Retrieve all items from the Listbox
sAllItems = .GetROProperty("all items")
'Split 'all items' using a delimiter ";" into an array
arrAllItems = Split(sAllItems, ";") 'Select a random number
intItem = RandomNumber.Value(LBound(arrAllItems), UBound(arrAllItems))
.Select "#" & intItem Reporter.ReportEvent micInfo, "ListItemIsNotFound", "Item: " & .GetROProperty("value")
End With
End Function

  Recovery_ListItemIsNotFound,顾名思议,如果WebList对象中不存在列表项,执行恢复操作。这中从错误在Web应用程序中是很常见的,WebList中的项往往随输入而更改。

 
  场景恢复创建入口:单击菜单栏 资源(Resources)->恢复方案管理器(Recovery Scenario Manager)。
点击后,可以看到以下窗口:

在窗口中,点击下面的按钮,可以调用场景恢复向导:

场景恢复向导 - 欢迎界面

当上面的界面打开后:

    1. 点击 Next
    2. 选择 Test Run Error 做为触发事件

    3. 点击 Next
    4. 选择‘Test Run Error: Item in list or menu not found in the Error Listbox

    5. 点击 Next -> Next ,导航到 恢复操作(Recovery Operation)界面

    6. 选择 Function Call ,点击 Next

    7. 选择恢复操作函数的存储库.
    8. 选择 'Define New Function',在编辑区粘贴Recovery_ListItemIsNotFound 函数;若所选库中已存在函数,可选择'Select function',并在下拉框中选择函数

      定义新函数

    9. 点击 Next,回到'Recovery Operations'页面
    10. 确保'Add Another Recovery Scenario'多选框未被选中,点击 Next.

    11. Under Post-Recovery Test Run Options, select proceed to next step.更多选项详解参考http://www.cnblogs.com/sylvia-liu/p/3706287.html

    12. 给场景命名,Click Next

    13. 最后, 检查选项: Add Scenario to current test,点击 Finish.保存并关闭。【补充:将该场景恢复方案应用于其他测试,File->setting->Recovery,选择场景方案】

  我们将在下面的 WebList中选择一个不存在的值;以下为源代码。查看列表下拉项,你会发现"Rational Robot"实际不存在,当我们选择它时,恢复方案将处理该错误-即从列表中选择一个随机值

QuickTest Pro
LoadRunner
Functional Tester
Selenium

Browser("title:=.*Recovery Scenario.*").Page("micclass:=Page")_
.WebList("name:=testTools").Select "Rational Robot"
 
MsgBox "Item Selected: " & Browser("title:=.*Recovery Scenario.*").Page("micclass:=Page")_
.WebList("name:=testTools").GetROProperty("value")

当执行上面这段代码时,你会发现不再抛出测试错误而是选中列表中的一个随机值.场景恢复方案被触发并成功执行后将出现下面的结果:

场景恢复执行记录

此外,还有很多其他场景,我会不断整理补充一些重要场景.

翻译自http://relevantcodes.com/recovery-scenario-test-run-error-item-in-list-or-menu-not-found/ ,若有错误部分,大家积极留言共同纠正

QTP 场景恢复– 函数调用的更多相关文章

  1. QTP场景恢复函数

    public Function RecoveryFunction1(Object, Method, Arguments, retVal) Dim FileName ,TimeNow, ResPath ...

  2. QTP场景恢复之用例失败自动截图

    以下代码是在QC里运行QTP来执行脚本过程,当执行过程中发现用例失败后就会自动截图,然后把用例返回到最初始的状态,模拟了场景恢复的机制 Class QCImageErrorCapture Dim qt ...

  3. testng实现场景恢复

    自动化测试过程中存在很多的不稳定性,例如网络的不稳定,浏览器无响应等等,这些失败往往并不是产品中的错误.那么这时我们需要对执行失败的场景恢复重新执行,确认其是否确实失败. 以前使用QTP的时候也使用了 ...

  4. UFT场景恢复

    场景恢复: 在脚本运行中可能会出现一些非预期事件.错误.程序崩溃等情况,阻止脚本继续执行下去,在此情况下脚本可能暂停执行, 直到某些界面被操作之后才会继续执行下去,为了处理这一类事件因此存在场景恢复. ...

  5. Oracle丢失重做日志的几种场景恢复

    实验环境:RHEL6.4 + Oracle 11.2.0.4 一.丢失重做日志组中成员 1.1 故障模拟 1.2 处理方法 1.3 实际处理过程 二.丢失重做日志组 2.1 丢失INACTIVE重做日 ...

  6. 实验Oracle数据文件被误删除的场景恢复

    环境:RHEL 5.4 + Oracle 11.2.0.3 背景:数据库没有备份,数据库文件被误操作rm,此时数据库尚未关闭,也就是对应句柄存在,如何快速恢复? 1.某个普通数据文件被删除 2.所有数 ...

  7. oracle rm -fr datafile 数据文件被误删的场景恢复(没有rman备份)

    环境: Linux release 7.5 oracle19c (无pdb,从11.2.0.4升级上去的) 一:单个非系统表空间的数据文件被删除 我先备份一下,虽然是测试环境. [oracle@19c ...

  8. 自动化测试工具QTP和SilkTest横向PK(转)

    转自:http://www.uml.org.cn/Test/201405212.asp?artid=1686 众所周知,自动化测试工具曾几何时三足鼎立,Mercury QTP/WinRunner系.I ...

  9. QTP基础学习(一)安装目录介绍

    上一篇介绍了QTP 10 安装,安装完成后就可以看到文件的目录了,这里主要介绍以下几个目录及作用. 简单介绍部分目录 1.addins:插件包 2.bin目录:可执行程序,这里存储了很多配置文件.运行 ...

随机推荐

  1. 十个 MongoDB 使用要点

    转自: 十个 MongoDB 使用要点    从 mongodb 阶段性技术总结 中抽取并整理了对大家有帮助的十个要点:   1.mongodb 表名和字段名统一用小写字母 mongodb 是默认区分 ...

  2. 【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展

    <Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...

  3. php实时输出内容能够

    web开发中有没有碰到需要适时的将结果输出到浏览器页面而不刷新整个页面的需求呢?当你在处理一个过程需要耗时很长,但你又需要适时的知道程序当前的处理状况的时候,该怎么办呢?下面就分享一下如何使用php及 ...

  4. Django数据库设计中字段为空的方式

    今天在做数据库设计的时候,设计了如下User表,其中我把email和phone字段设置为允许为空: class User(models.Model): username = models.CharFi ...

  5. android学习笔记21——消息提示Toast

    消息提示可细分为两种:大量消息提示——当程序有大量图片.信息需要展示时,采用对话框消息提示: 小量消息提示——当程序只有少量信息需要呈现给用户时,采用轻量级的对话框——Toast; Toast ==& ...

  6. VBA标准模块与类模块

    大家通过之前的介绍,已知道怎么将一个空模块插入VBA的工程中.从插入模块中可以看到,模块有有两种——标准模块与类模块.类模块是含有类定义的特殊模块,包括其属性和方法的定义.在后面会有介绍与说明. 随着 ...

  7. Swing多线程

    Swing的单线程开发机制 多线程开发,显然要比单线程开发有趣.高效.美妙得多.特别是在Java这种天生支持多线程的语言中,更是如此.可是,Java最重要的组成部分Swing确是单线程的! 并非只有S ...

  8. [Java Web – 3A] – Spring MVC开发注意事项

    1.使用Maven构建项目 2.SpringMVC 绝对路径的问题 首先要明确一点,在html中,资源文件也是有自己的URL,即href中是支持绝对路径.如下代码: <link href=&qu ...

  9. solr环境搭建

    介绍摘自百度百科:Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引:也可以通过 ...

  10. MST_prim

    刚刚发了mst 的kruskal,现在再来一发,说一说prim咯. prim适用于稠密图. 与kruskal不同,prim是从一个点开始,不断加入新的点直至连通所有点. 讲讲prim的过程,我们假定有 ...