qtp安装和使用
QTP许可证密钥的破解步骤:
以前使用QTP9.2 使用此方法成功破解,现在本人使用的HP QuickTest Professional 11 英文版,也成功适用。
一、准备工作:
1. 由于注册码文件自动生成到C:\Program Files\Common Files\Mercury Interactive\License Manager目录下,所以如果缺少这个路径文件,请先创建;
2. 关闭杀毒软件。
二、运行注册码应用程序
1. 下载QTP注册机-见附件,应用程序mgn-mqt82.exe,双击运行,来创建注册码,见页面提示:
-- e!l console v1.01 ---
Geting MachineID...
MachineID: 8-45036
Generating License...
License Generated Successfuly.
License Saved: 'C:\Program Files\Common Files\Mercury Interactive\License Manager\lservrc'.
All Done!
注:如果提示框没有出现:'C:\Program Files\Common Files\Mercury Interactive\License Manager\lservrc',请先确保Mercury Interactive、License Manager文件夹是否创建,lservrc不用手工创建,当运行注册码运用程序时会自动生成。
2. 进入‘C:\Program Files\Common Files\Mercury Interactive\License Manager’目录下,打开lservrc文件,Copy文件第一行或者第三行以#结尾的的字符串,此字符串就是注册码;
3. 打开QTP应用程序,选择License Type: Seat License, 在注册码输入框paste注册码。
当出现提示信息:License Type installed successfully
恭喜你!注册成功
四则运算生成脚本的方法:
在Automation的record and Run Settings中加入计算器程序URL
首先录制一个5+3的运算生成脚本,然后我们来逐步完善加强。
Window("计算器").WinButton("5").Click
Window("计算器").WinButton("+").Click
Window("计算器").WinButton("3").Click
Window("计算器").WinButton("=").Click
Window("计算器").WinButton("CE").Click
Window("计算器").Close
1.首先,我们因为我们打开计算器的地址不同,如果想把脚本下来以后用,打开的地址需要每次设置,所以我们把录制设置里的地址去掉,改成手动在脚本里添加打开方式,当然这一步也可以不做。在脚本最前面加上打开计算器
If Window("计算器").Exist(2)<> true Then
SystemUtil.Run "C:\WINDOWS\system32\calc.exe"
End If
2.输入第一个数字,我们希望的是1-5位数字,比如一个三位数,是不是我们需要在计算器上点击三个数字,所以click操作得点击三次,
所以我们需要给他一个数字的位数,数字的位数我们给他一个变量first_length,这个变量取值是一个1-5位的随机 数RandomNumber(1,5).
然后开始在计算机上点次数,所以用for语句 For i=1 to first_length(从1到first_length随机生成几个数字就点几次
然后给一个0-9的随机数字num=RandomNumber(0,9),就是计算器当前点的数字是几。
把Window("计算器").WinButton("5")中的5换成num,得是字符型的Winbutton(Cstr(num)),运行一下报错,说没找到按钮,在对象库中不存在,所以我们需要把计算器的所有东西都加到对象库中用object repository。
然后在运行一次。那么计算中的第一位数字设置完成了
计算中的第二位数字跟第一位是一样的,所以脚本直接复制过去,把变量换成second_length
3.下面开始增强运算符号,我们录制的是加法运算,但我们要做的是四则运算,所以这个运算符是随意的,让它自己随机在加减乘除中选择,给一个变量oper_num=RandomNumber(1,4),如果随机生成1,那么就点击加号,生成2时减。。。
我们用select case语句。oper_num=RandomNumber(1,4)
Select Case oper_num
Case 1
Window("计算器").WinButton("+").Click
Case 2
Window("计算器").WinButton("-").Click
Case 3
Window("计算器").WinButton("*").Click
Case 4
Window("计算器").WinButton("/").Click
End Select
4.前面的值都设置完了,下一步我们想是不是要把计算结果看下是否正确,那我们把点击=后的结果输出来。这时我们打开active screen预览窗口,找到点击等号那个屏,在计算结果处右击选择insert output value,选择text那个值输出,然后弹出界面选择输出到哪里,我们输出到data table中的一列,写一个名字actual_result。选择放到当前步骤后面after current step.也就是按完等号之后把结果输出来的操作。这时我们看到点击等号后的脚本后面生成一句代码Window("计算器").WinEdit("Edit").Output CheckPoint("Edit")
运行一下
这就是一个最简单的1-5位的四则运算。
6.但是我们在实际中并不是只跑一次,我们得跑很多次,所我们需要在整个脚本的前面加一个for...next循环,让他多跑几次。我们可以设置10次。for times=1 to 10 。
7.我们还有一个问题,刚刚我们让点击等号后的结束输出了,现在我们跑十次,那我们最后十次的结果都输出,最后显示的只能是最后一次的运算结果。因为我们是在这个action给他for的,所以只写到第一行里。
这时我们可以把计算结果的文本值手工拿出来赋值到actual_result列的下面几行。
Data Table.value("actual_result,",dtGlobalSheet)=Window("计算器").WinEdit("Edit").GetROProperty("text"),
这是赋值的,这样还是会赋值到第一行,所以还得在这段脚本前面加上行号,Data Table.SetCurrentRow(times)(当前运行到哪一行,就执行下面语句给他赋值)(times是for循环的那个times)
8.运行一下,这时有可能出现总跑不完的问题,这时把file-》setting中的run改成只迭代一次,因为我们设置的for循环语句跑十次,是这个action里面跑十次,但是这个action还得按照setting中设置的迭代次数跑,这样就是相当多遍,所以我们改成一次迭代,就相当于只跑十次了
当然也可以设置一个预期结果except_result用来比对实际与预期结果,并且给个状态status,相同就pass,不相同就fail。
脚本里,第一个数字点击完成next后加入代码:first_num=Window("计算器").WinEdit("Edit").GetROProperty("text"),这就是计算机运算的第一位数字,然后第二位second_num=Window("计算器").WinEdit("Edit").GetROProperty("text")
这两位经过运算让他显示在data table的expect_result中
在等号后,Select Case oper_num
Case 1
Data Table.Value("expect_result",dtGlobalSheet)=CDbl(first_num)+CDbl(second_num)
Case 2
Data Table.Value("expect_result",dtGlobalSheet)=CDbl(first_num)-CDbl(second_num)
Case 3
Data Table.Value("expect_result",dtGlobalSheet)=CDbl(first_num)*CDbl(second_num)
Case 4
Data Table.Value("expect_result",dtGlobalSheet)=CDbl(first_num)/CDbl(second_num)
End Select
至于结果的比对,自己去写下。
当然我们的脚本还是有些漏洞,比方说除时除数不能为零等,这个自己去研究完善下。
四则运算具体的脚本语言:
For times=1 to 2
SystemUtil.Run "C:\WINDOWS\system32\calc.exe","","C:\WINDOWS\system32","open"
first_length=RandomNumber(1,5)
For i=1 to first_length
num1=RandomNumber(0,9)
Window("计算器").WinButton(Cstr(num1)).Click
Next
first_num=Window("计算器").WinEdit("Edit").GetROProperty("text") 做判断时取的第一个数的值
oper_num=RandomNumber(1,4)
Select Case oper_num
Case 1
Window("计算器").WinButton("+").Click
Case 2
Window("计算器").WinButton("-").Click
Case 3
Window("计算器").WinButton("*").Click
Case 4
Window("计算器").WinButton("/").Click
End Select
sencond_length=RandomNumber(1,5)
For i=1 to sencond_length
num2=RandomNumber(0,9)
Window("计算器").WinButton(Cstr(num2)).Click
Next
second_num=Window("计算器").WinEdit("Edit").GetROProperty("text") 做判断时做的第二个数的值
Window("计算器").WinButton("=").Click
DataTable.SetCurrentRow(times) 当前行数
DataTable.value("actual_result",dtGlobalSheet)=CDbl(Window("计算器").WinEdit("Edit").GetROProperty("text")) 把实际结果赋值
Select Case oper_num
Case 1
DataTable.Value("expect_result",dtGlobalSheet)=CDbl(first_num)+CDbl(second_num)
Case 2
DataTable.Value("expect_result",dtGlobalSheet)=CDbl(first_num)-CDbl(second_num)
Case 3
DataTable.Value("expect_result",dtGlobalSheet)=CDbl(first_num)*CDbl(second_num)
Case 4
DataTable.Value("expect_result",dtGlobalSheet)=CDbl(first_num)/CDbl(second_num)
End Select
If DataTable.value("actual_result",dtGlobalSheet)=DataTable.Value("expect_result",dtGlobalSheet) Then 实际结果和理论将结果的判断
DataTable("status",dtGlobalSheet)="PASS"
else
DataTable("status",dtGlobalSheet)="FAIL"
End If
Window("计算器").Close
Next
小飞机所有页面的录制和脚本加强
1.首先把小飞机的登录,订飞机票,还有传真页面的对象分别存入对象库中保存。
有一点需要注意订单页面设计的到对象比较多,但我们最好是用到哪个存哪个,不用的就不存,因为多了系统也会运行比 较慢。就像人的大脑记得东西多了,就会累。影响性能。
2.可以用associate repository把对象和action关联起来。
3.录制小飞机的登录,订飞机票,传真。
4.分别拆分到不同的action中。那怎么分呢?可以把鼠标放到要拆分的地方,点击菜单edit->action->aplit action,或者点击快捷菜单。分成login,insert,fax。拆分时拆分的两部分可以是兄弟关系,也可以是父子关系。而且可以分别起名字。
5.拆分完后我们可以分别给每一部分关联它的对象,不需要的删除。(因为有些事关联着的所以删除不了,这时把关联的地方去掉关联即可)
注意:首先flight页面中有个menu对象,这个menu是fax中的,可以去掉。共享对象库是只能读的。
fax中我们发现fax中有两个order号,其实我们只需要11那个,先把下面的删除,等会运行可能会有问题,到时我们会 解决。而且我们发现menu虽然是需要的在fax中,但menu没有在fax中,所以我们需要完善下对象库。点击resource-》object repository,把menu导出。为fax2.然后点击object repository中的tool-》object repository merge tool,把fax和fax2关联下。保存为fax3.然后把action fax与fax3关联。
6.首先我们还是把飞机启动的改成手动的
If Dialog("Login").Exist(2)=false Then
SystemUtil.Run"C:\Program Files\HP\QuickTest Professional\samples\flight\app\flight4a.exe"
End If
把设置密码那改为跟上面输入用户名一样的形式set "mercury"
7.运行一下,发现到传真页面出问题了,说找不到传真页面,其实传真页面有,只是叫传真18了,比对象库中加1了,那我们怎么匹配到这个加1 的窗口呢?我们打开对象库的fax3,我们的传真号那写的是11,那我们编辑下,把传真号11改为Num,这样还是不行,因为下面text中是11,所以text中的11也要改,我们要改为一个自动匹配的数字,那怎么匹配呢?点击点击下面的单选框regular expression,然后选择一个字符让它代表里面的东西是数字,我们去帮助文档中找regular expression(reg exp)object下有一个pattern property,找到\d代表的是数字,所以我们把11改成\d,\d出现次数用{n,},所以text文本内容改为fax order No\.\d{1,}至少匹配一次。
同时脚本中相应传真编号那也把名字改一下fax order No.Num
在接着运行一下,跑通后可以继续完善脚本
8.那我们登录页面,第一节课讲的那些登录的用例可以放进去了。但有一点要注意:最后一条记录一定要保证他能正常进行。才能进入到insert订单页面,这样流程就能跑起来了,也就是程序只要从头走一遍就都能验证了,这个过程一直重复进行。这就是自动化的好处
大家可以自己设计下,这里就不写了
这里我们只加一点,我们只验证它流程的正确定。
在点击了login点击ok后,或者在insert之前,验证定飞机票的那个页面是否出现。即验证登录是否成功,我们在insert页面之前加吧。加一个检查点,看那个页面是否跳出来
9.订单中输入日期,我们知道是随机的,所以我们设置一个变量randomDate=Date+XXX,date是当前时间,我们让他去加一个时间(1-30天中的任意一天),所以,定义变量iDay=RandomNumber(1,30),让randomDate=Date+iDay,当然如果我们不知道写的对不对可以新开一个窗口编写完,写个msgbox让他输出来看下,正确了在贴到这边来。这样我们得到输入随机日期的脚本:
iDay=RandomNumber(1,30)
randomDate=Date +iDay
下面是构造mmddyy格式的,并且当日期或者天是一个数字时需要前面加0,
mm=month(randomDate)
If Len(month)(randomDate)=1 Then
mm="0"&mm
End If
dd=day(randomDate)
If Len(day(randomDate))=1 Then
dd="0"&dd
End If
fmtDate=mm&dd&right(year(randomDate),2)
把fmtDate贴到
Window("Flight Reservation").WinObject("Date of Flight").Type "fmtDate"
当然这个也可以用函数写
这就是我们的随机时间
10.下面是我们的fly from随机。那这个地方怎么随机呢?
fromIndex=RandomNumber(),因为我们的ComboBox从哪出发是一个下拉列表形式,从里面选择,它的个数就是下拉列表有多少项,所以我们可以通过Window("Flight Reservation").WinComboBox("Fly From:")里面的个数减一,我们用一个函数GetltemsCount,
按照我们的理解也就是可以写成:
fromIndex=RandomNumber(0,Window("Flight Reservation").WinComboBox("Fly From:").GetItemsCount-1)
但是因为RandomNumber里面不支持表达式,所以我们写成
fromCount=Window("Flight Reservation").WinComboBox("Fly From:").GetItemsCount-1
fromIndex=RandomNumber(0,fromCount)
Window("Flight Reservation").WinComboBox("Fly From:").Select fromIndex
同样fly to也是一样的。所以目的地随机是:
toCount=Window("Flight Reservation").WinComboBox("Fly To:").GetItemsCount-1
toIndex=RandomNumber(0,toCount)
Window("Flight Reservation").WinComboBox("Fly to:").Select toIndex
11.下面的选择航线winlist也是一个列表,我们要选择当前航线中的某一条航线。
所以
listCount=Window("Flight Reservation").Dialog("Flights Table").WinList("From").GetltemsCount-1
listIndex=RandomNumber(0,listCount)
Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select listIndex
12.下面订单的设置用户名是我们的登录用户,即登录用户名,所以我们可以从login action里面的输出到data table表里。然后到insert action设置用户名这从data table表取。
所以我们在login action中登录名那行的脚本右键选择insert output value,有可能报错。那我们换另一种方式
在输入用户名那行脚本后面空出一行,鼠标放空出的一行,打开小飞机的登录页面,然后点击record,选择菜单中insert-》output value-》text output value,然后选中login页面的agent name输入框,然后点击ok弹出text output value properties对话框,选择modify,然后选中global sheet,name输入框自己取名字agent_name,就可以了。
然后insert action中的Window("Flight Reservation").WinEdit("Name:").Set "mercury"改为Window("Flight Reservation").WinEdit("Name:").Set Data Table("agent_name",dtGlobalSheet)
这样我们取得值就是登录人的信息了。
13.Window("Flight Reservation").WinEdit("Tickets:").SetSelection 0,1这行信息不需要的。
14.下面是设置集票数,因为我们经过实践知道集票数只能是最高10张,所以写成:
tickets=RandomNumber(1,10)
Window("Flight Reservation").WinEdit("Tickets:").Set Cstr(tickets)
这样就是我们的随机机票数。
15.最后就是机舱随机,跟加减乘除随机一样的,1-3中情况
num=RandomNumber(1,3)
Select Case nun
Case 1
Window("Flight Reservation").WinRadioButton("First").Set
Case 2
Window("Flight Reservation").WinRadioButton("Business").Set
Case 3
Window("Flight Reservation").WinRadioButton("Economy").Set
End Select
16.fax里不需要修改。然后运行一下试试。这就是我们做的让整个流程能够跑通的操作。这个没有人工控制,都是机器自动运行的。
小飞机脚本加强语言:
login:暂未做加强
If Dialog("Login").Exist(2)=false Then
SystemUtil.Run"D:\HP\QuickTest Professional\samples\flight\app\flight4a.exe"
End If
Dialog("Login").WinEdit("Agent Name:").Set "mercury"
Dialog("Login").WinEdit("Password:").Set "mercury"
Dialog("Login").WinButton("OK").Click
flight:
iday=RandomNumber(1,30)
randomdate=date+iday
mm=month(randomdate)
If Len(mm )=1 Then
mm=0&month(randomdate)
End If
dd=day(randomdate)
If Len(dd)=1 Then
dd=0&day(randomdate)
End If
fmtdate=mm&dd&right(year(randomdate),2)
Window("Flight Reservation").WinObject("Date of Flight:").Type fmtdate
fromindex=RandomNumber(0,Window("Flight Reservation").WinComboBox("Fly From:").GetItemsCount-1)
Window("Flight Reservation").WinComboBox("Fly From:").Select fromindex
toindex=RandomNumber(0,Window("Flight Reservation").WinComboBox("Fly To:").GetItemsCount-1)
Window("Flight Reservation").WinComboBox("Fly To:").Select toindex
Window("Flight Reservation").WinButton("FLIGHT").Click
flight=RandomNumber(0,Window("Flight Reservation").Dialog("Flights Table").WinList("From").GetItemsCount-1)
Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select flight
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
Window("Flight Reservation").WinEdit("Name:").Set "mercury" 此处未做增强,可参照四则运算第四步
tickets=RandomNumber(1,10)
Window("Flight Reservation").WinEdit("Tickets:").Set Cstr(tickets)
num=RandomNumber(1,3)
Select Case nun
Case 1
Window("Flight Reservation").WinRadioButton("First").Set
Case 2
Window("Flight Reservation").WinRadioButton("Business").Set
Case 3
Window("Flight Reservation").WinRadioButton("Economy").Set
End Select
Window("Flight Reservation").WinButton("Insert Order").Click
Window("Flight Reservation").WinMenu("Menu").Select "File;Fax Order..."
fax: 未做增强
SystemUtil.Run "C:\Program Files\SogouInput\SogouExe\SogouExe.exe","/check","","open",0
Window("Flight Reservation").Dialog("Fax Order No\. \d{1,}").WinObject("Fax Number:").Type "1111111111"
Window("Flight Reservation").Dialog("Fax Order No\. \d{1,}").Drag 264,211
Window("Flight Reservation").Dialog("Fax Order No\. \d{1,}").WinObject("Fax").Drop 338,248
Window("Flight Reservation").Dialog("Fax Order No\. \d{1,}").WinCheckBox("Send Signature with order").Set "ON"
Window("Flight Reservation").Dialog("Fax Order No\. \d{1,}").WinButton("Send").Click
Window("Flight Reservation").Close
qtp安装和使用的更多相关文章
- QTP安装和破解
(1)底版本QTP安装破解 安装:http://bbs.51testing.com/thread-527025-1-1.html 进行破解: 1.创建文件夹C:/Program Files/Commo ...
- 【转】qtp安装时问题
1.安装qtp后要重启机器. 2.插件选择错误, 处理方式:重新启动QTP,勾选 WEB插件; 3.在安装QTP后,或者禁用IE浏览器里的一些ActiveX控件后,正常录制QTP时,对象识别不了;(保 ...
- QTP安装出现windoes installer不能安装升级修补程序问题
问题如下: windoes installer不能安装升级修补程序问题 如何解决?还未找到解决方案
- QTP 10 安装及破解
QTP(QuickTest Professional),是一款比较优秀的商业自动化测试工具,主要用于web项目和C/S结构程序的测试. QTP具有的一大特性:关键字驱动测试(keyword-drive ...
- 自动化测试工具QTP的使用实例 分类: 软件测试 2015-06-17 00:23 185人阅读 评论(0) 收藏
1. QTP简介 1.1QTP功能与特点 QTP是QuickTest Professional的简称,是一种自动化软件测试工具.在软件的测试过程中,QTP主要来用来通过已有的测试脚本执行重复的手动测试 ...
- QTP功能点笔记
1.QTP启动应用程序的几种方法 1)用SystemUtil.Run 1 SystemUtil.Run "C:\Program Files (x86)\HP\QuickTest Profes ...
- [QTP/UFT12]无限延长试用期的方法
1. 删除C:\ProgramData隐藏目录下的SafeNet Sentinel文件夹 2.运行QTP安装目录下的bin\instdemo.exe 3. 重新运行QTP/UFT 12后即可恢复30天 ...
- QTP学习一添加默认的注释及调用外部vbs文件
一.添加默认注释 1.新建一个TXT文档,将要添加的注释写在文档中 2.再将文档名改为:ActionTemplate.mst 3.将文件放到QTP安装目录(默认为:C:\Program Files\H ...
- QTP11.00安装+破解详细教程
一. 安装过程 首先双击setup.exe文件,选择“QuickTest Professional安装程序” 此时会查看你机子上面是否有QTP需要,但是机子上没有的组件, 跟着先安装这两个组 ...
随机推荐
- html基础内容
HTML基础 1. HTML 标题 HTML 标题(Heading)是通过 <h1> - <h6> 等标签进行定义的. 2. HTML 段落 HTML 段落是通过 <p& ...
- SSH使用ProxyCommand通过代理服务器远程连接其他服务器
当前环境拓扑图: 用户管理海外服务器,通过公网SSH远程时,由于网络质量原因公网丢包严重,这就导致管理员在对海外云主机进行管理时体验较差,表现形式可能是由于公网丢包严重执行命令卡顿,或者SSH进程 ...
- nexus php composer host 模式repo 试用
前边有介绍以及运行过基于nexus proxy 模式的php composer(其中也有一些坑),以下是关于host 模式的 简单使用 环境准备 docker-compose 文件 version ...
- 7.Vue的计算属性
1.什么是计算属性 computed:计算属性的重点突出在 属性 两个字上(属性是名词),首先它是个 属性 其次这个属性有 计算的能力(计算是动词),这里的 计算 就是个函数:简单点说,它就是一个能够 ...
- 图论问题(2) : hdu 1102
题目转自hdu 1102,题目传送门 题目大意: 输入一个n*n的邻接矩阵,其中i行j列代表从i到j的路径的长度 然后又m条路已经帮你修好了,求最短要修多长的路才能使所有村庄连接 不难看出,这道题就是 ...
- 吉特仓储管理系统-ERP或WMS系统中常见术语
MPS---主生产计划(Master Production schedules) MTO---订货生产(Make-to-Order) BOM---物料清单或产品结构表(Bill of material ...
- Java Scala获取所有注解的类信息
要想获取使用指定注解的类信息,可借助工具: org.reflections.Reflections 此工具将Java反射进行了高级封装,Reflections 通过扫描 classpath,索引元数据 ...
- ping不通服务器的解决方法
参考腾讯云的解决办法: https://cloud.tencent.com/document/product/213/14639#CheckOSSetting 我的服务器是aws的, 解决方法大同小异 ...
- jenkins+sonarqube进行代码质量检测
JavaNeverGiveUp教程篇 用jenkins+sonarqube去检查代码是非常方便的,它能检查出代码中可能存在的一些问题,比如io流未关闭.空指针异常.死循环.代码不规范等问题. 1. 搭 ...
- 利用SQL计算两个地理坐标(经纬度)之间的地表距离
两个地理坐标(经纬度)地表距离计算公式: 公式解释如下: Long1,Lat1表示A点经纬度,Long2,Lat2表示B点经纬度: a=Lat1–Lat2 为两点纬度之差,b=Long1-Long2为 ...