QTP进阶使用1

目录

一、飞行订票系统问题

二、录制多个action

三、action的拆分

四、局部参数化订票系统

五、正则表达式验证

六、剪切复制成多个action


上午实习任务:

  • 在之前录制好的登录、订票、退出的脚本上补录发传真的脚本(要求有签名动作)
  • 回放脚本观察、分析,尝试解决问题
  • 依据qtp的工作原理来解决以上问题
  • 对画图软件的画图或写字的过程用模拟录制,确保脚本回放正确
  • 用模拟录制解决发传真签名的问题
  • 尝试用正则表达式解决传真出错的问题

下午实习任务:

  • 录制或拆分飞行订票系统到登录、订票、退出3个Action
  • 局部参数化使脚本能够登录、退出各一次而反复执行订票多次
  • 观察、分析并解决出现的问题
  • 编写一个html文件用qtp结合参数化、检查点和正则表达式来验证哪些数据满足正则表达式a[0-9A-Z]\.k*\W的表达范围
  • 尝试采用剪切复制的方法将代码放入到多个Action中,让飞行订票脚本变成多个Action

一、飞行订票系统问题

我们先录制一个打开订票系统订票然后关闭的test,运行一遍保证无误

然后在第12-13行之间补录一个发传真的过程

运行一遍,发现画面停留在传单发送页面,并报如下错误

仔细观察代码,可以发现录制中录制了第59个订单,但是我们下一次执行时,订单编号是不会是59(这里因为中间多尝试了几次所以已经到66了)

解决办法有两种:

(1)打开对象仓库,把下列属性删除

原理是,可以观察的到,除了[text]属性外,还有[nativeclass]属性是独一的可区分的,删除掉[text]后仍然不会影响识别

(2)使用正则表达式

.表示除换行之外的任意单字符 
*匹配前面的字符0次或多次

如:a*  -->   a  aa  aaa …

abc*  --> ab  abc  abccc …

+匹配前面的字符1次或多次 
匹配前面的字符0次或1一次 
^匹配字符串的开始位置如: ^a  -->  表示以a开头的字符串 abc adsfd …
$匹配字符串的结束位置如: a$  -->  表示以a结尾的字符串 dsfsda dfa …
\w匹配0-9,a-z,A-Z,_ 
\W匹配余下的字符 

打开对象仓库,添加属性

编辑

勾选“正则表达式”,弹出对话框选“否”

把“59”改成“[0-9+]”,表示匹配[0-9]的数字一次或多次

 

解决完后运行一下,发现虽然发送成功了,但是签名却和之前录制的不一样

这是因为QTP只能录制鼠标点击的动作,不能录制鼠标滑动的路径,所以只录制到了开始签名和结束签名时的位置。

 

我们先用“画图”软件测试一下。

开始录制,打开“画图”

点击上图所示的“模拟录制”

选择第二个,并点击一下图示按钮

可以看到鼠标的光标变成了一个小手,点击画图软件的窗口,并选择[Start Analog Record]

画好图后再点击一下上图所示的按钮,即可保存画图

可以看到代码里形成了路径的这一段。

回放一下,画图路径被完美保存。

 

现在回到QTP,把签名的那一段删掉,并按以上方法补录

回放一遍,报错

这是因为我们刚刚录制签名时是在订单号68上录制的,而现在是69号,和上面的问题一样

找到相应的位置,把该行删除

回放成功,问题解决


二、录制多个action

考虑:对于两位数加数器这个程序来说,如果我们想让它打开一次,然后计算3次,再关闭一次,该怎么做呢?

如果我们直接一次性录制,那就相当于是只有一个main函数,所有的代码都在里面,只能对“计算”这一段步骤加一个循环。

如果为了程序简明,可以分别写3个方法,打开、计算和关闭,然后在main中直接调用。

 

我们打开QTP,新建一个录制,观察页面左边,现在只有一个action1

点击菜单栏上的图标,新建action

第一栏可以定义该action的名字,[Reusable Action]表示复用action,[Location]中,第一个表示添加兄弟action,第2个表示添加子action,这里我们选择第一个

一共添加2个action

现在我们先选择action1,录制程序的打开

然后切换到action2,录制计算过程,中途不用停止录制

最后切到action3,录制关闭

运行一下验证可行

我们到action2中,设置好参数,并在数据表中列出3条数据

这里要注意选择局部变量

可以看到数据表中只有action2的表添加了数据

直接运行,发现还是只计算了1次

我们打开action2的设置

选择运行所有行

再次运行,功能实现

 

同时,我们也可以边录制边新建action

先开始录制,打开网页

点击“新建”,继续录制

直到录制完毕


三、action的拆分

我们打开早上录制好的飞行订票脚本

上图中红线上部分为登录,下部分为订票

点击切割按钮

选择“是”

可以看到左侧有两种切割方法

切割为兄弟action

切割为父子action

这里我们选第一种,把整个Action分成4部分,登录、登记、发传真、退出

点击下图按钮可更改action名字

  

 

 

打开对象仓库看一下

每一个action都包含了所有对象,这使得仓库中冗余。因此,一般来说,在录制时就应该分开录制,而不是等到之后再拆分。


四、局部参数化订票系统

对[register]部分进行参数化,设置为运行数据表所有行,并运行

发现登记到第二栏数据时出错

这是因为我们没有新增订票,使得第二个订票被识别成了修改,[insert order]按钮没有激活

这时我们可以选择补录一下,但是事实上只需要录一个步骤,因此有另一种思路:

1、在代码区新增一行代码

在快照区加入[新增]按钮的对象为[Button]

在代码区第一行加入该点击代码(模仿下句代码加入)

2、直接在快照区加入动作

选择[step generator]

可以看到这里已经生产了该代码


五、正则表达式验证

录制一个打开网页,输入数据,关闭的3个action的test

对action2进行参数化

其中,第5个最后有空格,第6个没有

对input设置检查点

选择[value]

点击更改

设置成正则表达式 a[0-9A-Z]\.k*\W

该表达式的意思为a开头,后接[0-9]的数字或[A-Z]的单字母,再接一个“.”,后接0个或多个k,再接一个除[0-9a-zA-Z_]的字符

运行一下

显示为第1、2、6错误,3、4、5正确


六、剪切复制成多个action

打开录制好的飞机订票器,创建多个action

用复制粘贴的方式把相应代码移进新加的Action

切换到关键字视图

发现除了action1外,其他的对象都是空

运行一下

报错,对象不存在

在对象仓库中,点击图示按钮

选择需要添加的对象,全部抓取

其中,捕捉“关闭”按钮时,选择“只选择该对象”

结束后可以看到图标变回正常样式

运行一下,可以成功。

显然,这样使得操作很繁琐,最简便的方式还是边录制边分action。

如果不想一个一个添加对象,这里还有一个批量添加的方法

打开action1的对象仓库,选择[file] --> [export local objects]

保存后,在对象仓库中,点击下图所示按钮

点击添加

选择刚刚导出的tsr文件

由于action1中已有对象,缺的是action2和action3,把2和3添加到右边,如图所示

点击[OK]

切换到action3的对象仓库,可以发现里面存在对象

对象颜色是灰的,因为它实际上借用的是action1的对象

当然除了test内部批量借用对象,也可以外部借用

但是这会存在一个问题,因为是借用,如果原件的对象产生了变化,导入后的对象也会相应的变化

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值