QTP(10)
一、VBS语言基础
1.运算符和表达式
(1)运算符
(2)表达式
a.数学表达式:由算术运算符连接,计算结果为数字
b.字符串表达式:由字符串连接符连接,计算结果为字符串
c.条件表达式:由关系运算符或逻辑运算符连接,计算结果为布尔值----重点!!
Test10001_VBS基础_关系运算符_强制转换
'Dim a,b,c,d,e,f,g
'a=100
'b=99
'c="100"
'd="100"
'e="99"
'f="Hello"
'g="World"
'msgbox cstr(a)+f'100Hello 'msgbox a>b'True
'msgbox c<>d'False
'msgbox a=c'Flase数据子类型不同,不相等
'msgbox cint(a)=cint(c)'True
'msgbox cstr(a)=cstr(c)'True
'msgbox a>e'False???
'msgbox a>cint(e)'将e强制转换为integer,再比较大小
'msgbox f>g'False 'msgbox 10/3
'msgbox cint(10/3)'3
'msgbox 10/7
'msgbox cint(10/7)'1
'msgbox cint(10.56)'11
'msgbox cint(10.500001)'11
msgbox cint(10.5)'10
msgbox cint(8.5)'8
msgbox cint(6.5)'6
msgbox cint(11.5)'12
msgbox cint(3.5)'4
msgbox cint(1.5)'2
2、强制转换子类型
(1)cstr:强制转换为String子类型
例:a=cstr(b)
(2)cint:强制转换为Integer子类型
例:a=cint(b)
转换原则:
a.当小数部分小于0.5时,舍掉
b.当小数部分大于0.5时,进位
c.当小数部分等于0.5时,取最接近的偶数作为结果。
CBool Function | CByte Function | CCur Function | CDate Function | CDbl Function | CLng Function | CSng Function | CStr Function | Int, Fix Functions
练习:录制Flight3个Action:登录、订票、退出,在订票Action中对订票的数据做DataTable参数化,其中航班在DataTable中准备选项编号。
Test10002_Flight_订票_DataTable参数化
登录Action()
Dialog("Login").WinEdit("Agent Name:").Set "12345"
Dialog("Login").WinEdit("Password:").SetSecure "5a5eb3b62861ca09e91a9690d13c8327db9c7737"
Dialog("Login").WinButton("OK").Click 订票Action()
Window("Flight Reservation").WinButton("Button").Click
Window("Flight Reservation").ActiveX("MaskEdBox").Type "111119"
Window("Flight Reservation").WinComboBox("Fly From:").Select "Denver"
Window("Flight Reservation").WinComboBox("Fly To:").Select "Frankfurt"
Window("Flight Reservation").WinButton("FLIGHT").Click
Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select cint(DataTable("航班",dtLocalSheet))
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
Window("Flight Reservation").WinEdit("Name:").Set "ooo"
Window("Flight Reservation").WinButton("Insert Order").Click 退出Action()
Window("Flight Reservation").Close
3.数组:用于存放一组数据
(1)用法一:
Dim 数组名称(最大下标)
数组名称(下标)=值
注意:下标从0开始,每个元素可以赋值任意子类型的数值。
例:
'用法一
Dim stu(3)
stu(0)="zhangsan"
stu(1)="lisi"
stu(2)="wangwu"
stu(3)=100
msgbox stu(1)
Test10003_VBS基础_数组
'用法一
'Dim stu(3)
'stu(0)="zhangsan"
'stu(1)="lisi"
'stu(2)="wangwu"
'stu(3)=100
'用法二:
Dim stu
stu=array("zhagnsan","lisi","wangwu",100)
msgbox stu(3)
(2)用法二:
Dim 变量
变量=array(值1,值2,值3,值4,值5)
说明:变量就可以当做数据名称来使用。
例:
'用法二:
Dim stu
stu=array("zhagnsan","lisi","wangwu",100)
msgbox stu(3)
练习:录制两位数加法器加法计算后退出的步骤,将2个加数的数据提前存储在一个数组中,由数组元素提供加数数据。
Test10004_两位数加法器_数组
'用法一:
'Dim num(1)
'num(0)="30"
'num(1)="80"
'用法二:
Dim num
num=array("30","80")
VbWindow("Form1").VbEdit("Text1").Set num(0)
VbWindow("Form1").VbEdit("Text2").Set num(1)
VbWindow("Form1").VbButton("计算(J)").Click
VbWindow("Form1").VbButton("退出(E)").Click
VbWindow("Form1").Dialog("退出提示").WinButton("确定").Click
4.输入输出
(1)msgbox:弹出信息框输出内容,测试时一般用于调试代码时输出关键变量的当前值。
语法:msgbox "内容"
(2)inputbox:弹出输入框来接收用户的输入,一般用于和用户交互。
语法:变量=inputbox("请输入……")
注意:只有当用户点击“确定”后,才会返回输入框中的内容,如果点击“取消”或直接关闭输入框,都返回空字符串。
例:
'inputbox "请输入您的姓名:"
Dim n'姓名
n=inputbox("请输入您的姓名:")
msgbox n
(3)特点:inputbox和msgbox都会打断程序的执行,必须等待用户操作后才继续执行,自动化测试时,尽量减少输入输出框的使用。
(4)msgbox的替换方案:QTP提供的打印日志功能,最终自动化测试代码中建议使用print代替msgbox
语法:Print "内容"
练习:不录制,书写代码实现:
(1)使用两个Inputbox获得两个操作数,存储在一个数组中
说明:运行时都输入整数(例如20和30)
(2)对这两个数分别做乘法和加法计算,将结果存储在两个变量中
(3)使用两个msgbox输出以下格式的信息
例如:
20乘以30等于600
20加上30等于50
Test10005_VBS基础_综合
Option Explicit
'练习:不录制,书写代码实现:
'(1)使用两个Inputbox获得两个操作数,存储在一个数组中
Dim num(1)
num(0)=Inputbox("请输入第一个数:")
num(1)=Inputbox("请输入第二个数:")
'说明:运行时都输入整数(例如20和30)
'(2)对这两个数分别做乘法和加法计算,将结果存储在两个变量中
Dim result1,result2'结果1和结果2
result1=num(0)*num(1)
result2=cint(num(0))+cint(num(1))
'(3)使用两个msgbox输出以下格式的信息
'例如:20乘以30等于600
' 20加上30等于50
msgbox num(0)&"乘以"&num(1)&"等于"&result1
msgbox num(0)&"加上"&num(1)&"等于"&result2
二、总结VBS语法规则
1.总结VBS函数:
(1)wait 5
(2)msgbox "Hello"
(3)a=Inputbox("请输入")
(4)a=cint(b)
(5)a=cstr(b)
(6)a=array(1,6,8)
2.VBS函数使用的语法规则:---非常重要!
(1)如果函数无返回值,或有返回值但是不接收返回值时,将参数写在函数名称的空格后。
(2)如果函数有返回值并且接收返回值,那么将参数写在函数名称后的小括号内。
说明:除了函数,对象的方法也遵循这种语法规则。
3.GetROProperty方法
(1)作用:获得RO指定属性的当前值。
(2)语法:变量=对象.GetROProperty("属性名称")
(3)前提:该TO对象必须在对象仓库中存在
(4)返回值:属性当前值(子类型是String)。
例:
num=Window("Flight Reservation").WinEdit("Order No:").GetROProperty("text")
练习:使用jack用户名登录Flight,订票后,获得新订单号,退出后,使用rose用户登录Flight,打开jack刚订的新订单号的票,再退出
Test10006_Flight_GetROProperty
SystemUtil.Run "C:\Program Files\HP\QuickTest Professional\samples\flight\app\flight4a.exe","","C:\Program Files\HP\QuickTest Professional\samples\flight\app\","open"
Dialog("Login").WinEdit("Agent Name:").Set "jack"
Dialog("Login").WinEdit("Password:").SetSecure "5a5efc499ef99cc3a3509a9dd5b95f25b33c87a0"
Dialog("Login").WinButton("OK").Click
wait 5
Window("Flight Reservation").ActiveX("MaskEdBox").Type "111119"
Window("Flight Reservation").WinComboBox("Fly From:").Select "Frankfurt"
Window("Flight Reservation").WinComboBox("Fly To:").Select "Denver"
Window("Flight Reservation").WinButton("FLIGHT").Click
Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select "20174 FRA 10:24 AM DEN 11:09 AM SR $323.80"
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
Window("Flight Reservation").WinEdit("Name:").Set "alice"
Window("Flight Reservation").WinButton("Insert Order").Click
wait 10
'获得新订单号
Dim num
num=Window("Flight Reservation").WinEdit("Order No:").GetROProperty("text")
print num
Window("Flight Reservation").Close
SystemUtil.Run "C:\Program Files\HP\QuickTest Professional\samples\flight\app\flight4a.exe","","C:\Program Files\HP\QuickTest Professional\samples\flight\app\","open"
Dialog("Login").WinEdit("Agent Name:").Set "rose"
Dialog("Login").WinEdit("Password:").SetSecure "5a5efcd5b7328b37323ce6442cfa0b1f87d7a9d8"
Dialog("Login").WinButton("OK").Click
Window("Flight Reservation").WinButton("Button").Click
Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Order No.").Set "ON"
Window("Flight Reservation").Dialog("Open Order").WinEdit("Edit").Set num
Window("Flight Reservation").Dialog("Open Order").WinButton("OK").Click
Window("Flight Reservation").Close
三、随机数参数化
1.作用:做随机测试
2.实现方式一:在关键字视图中,点击Value列的数据,点击其后的<#>按钮,在弹框中选择Parameter,选择下拉框中的Random Number,输入From下限和To上限值,点击OK
缺陷:下限和上限不能输入负数
3.实现方式二:在专家视图中,使用RandomNumber(下限,上限)的语法格式代替常量即可。
4.注意:RandomNumber(下限,上限)的语法格式生成的数据子类型是Integer
练习:录制Flight登录、订票、退出的步骤,订票时的数据做随机数参数化
Test10007_Flight_随机数参数化
Dialog("Login").WinEdit("Agent Name:").Set "1234"
Dialog("Login").WinEdit("Password:").SetSecure "5a5f09bbe317fe069bb1dc4a7facfffe5b6cea25"
Dialog("Login").WinButton("OK").Click
wait 8
Window("Flight Reservation").ActiveX("MaskEdBox").Type "111119"
Window("Flight Reservation").WinComboBox("Fly From:").Select RandomNumber(0,9)
Window("Flight Reservation").WinComboBox("Fly To:").Select RandomNumber(0,8)
Window("Flight Reservation").WinButton("FLIGHT").Click
Dim c'航班数(列表框的选项个数,items count属性值)
c=Window("Flight Reservation").Dialog("Flights Table").WinList("From").GetROProperty("items count")
Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select RandomNumber(0,c-1)
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
Window("Flight Reservation").WinEdit("Name:").Set "jack"
Window("Flight Reservation").WinEdit("Tickets:").SetSelection 0,1
Window("Flight Reservation").WinEdit("Tickets:").Set cstr(RandomNumber(1,10))
Window("Flight Reservation").WinButton("Insert Order").Click
Window("Flight Reservation").Close
Dim c'航班数(列表框的选项个数,items count属性值)
c=Window("Flight Reservation").Dialog("Flights Table").WinList("From").GetROProperty("items count")
Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select RandomNumber(0,c-1)
练习:录制Flight登录-打开1-10之间随机编号的订单-退出,打开完订单后,退出前,使用msgbox输出“顾客x预定了y从z到w的k张票!”
说明:x是顾客姓名、y是日期、z是FlyFrom、w是FlyTo、k是Tickets票数
QTP(10)的更多相关文章
- QTP(9)
常用的Windows控件 WinEdit---Set "数据值" SetSecure "加密数值" WinButton---Click WinComboBox- ...
- QTP(8)
一.Action 1.调用Action C:\Program Files\HP\QuickTest Professional\CodeSamplesPlus\Flight_Samples (1)调用A ...
- 2016windows(10) wamp 最简单30分钟thrift入门使用讲解,实现php作为服务器和客户端的hello world
2016最简单windows(10) wamp 30分钟thrift入门使用讲解,实现php作为服务器和客户端的hello world thrift是什么 最简单解释 thrift是用来帮助各个编程语 ...
- Neutron 理解(10):虚拟专用网(VPN)虚拟化 [How Neutron implements VPN Virtualization]
学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...
- 基于MVC4+EasyUI的Web开发框架经验总结(10)--在Web界面上实现数据的导入和导出
数据的导入导出,在很多系统里面都比较常见,这个导入导出的操作,在Winform里面比较容易实现,我曾经在之前的一篇文章<Winform开发框架之通用数据导入导出操作>介绍了在Winform ...
- Python的平凡之路(10)
异步IO 数据库 队列 缓存 1.Gevent协程 定义:用户态的轻量级线程.协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下 ...
- varchar(10)与nvarchar(10)有什么区别
前者是非unicode型,存储字符按1个算(内部空间存储占1字节),存储汉字的话按2个算, 就是可以存10个字符或者5个汉字 后者是unicode型,存储什么都是按1个算(内部空间存储占2字节), 就 ...
- Spring入门(10)-Spring JDBC
Spring入门(10)-Spring JDBC 0. 目录 JdbcTemplate介绍 JdbcTemplate常见方法 代码示例 参考资料 1. JdbcTemplate介绍 JdbcTempl ...
- Unity3D项目实战笔记(10):Unity3D编译IPA的PostEvents–节约时间利器
最近,SDK支付等接入差不多了,就从Unity3D生成IPA (企业版License), 然,需要手动执行的PostEvents竟然多大10项+, 这些我默默的承受了1周时间,每次约浪费20分钟-额外 ...
随机推荐
- CTF—攻防练习之Capture the Flag
主机:192.168.32.152 靶机:192.168.32.160 首先nmap扫描端口: ftp,ssh,http服务 dirb扫描目录,flag下有一个flag password目录下,查看源 ...
- androidstudio出包问题--Warning: there were 1 unresolved references to classes or interfaces.
问题:存在unresolved的类或接口导致打包失败 Warning: there were 1 unresolved references to classes or interfaces. You ...
- 【VS开发】【C/C++开发】传递双重指针申请内存,典型用法
传递双重指针申请内存,典型用法 指针参数是如何传递内存的? 如果函数的参数是一个指针,不要指望用该指针去申请动态内存.如下示例中,Test函数的语句GetMemory(str, 100)并没有使str ...
- 【并行计算-CUDA开发】CUDA软件架构与Nvidia硬件对应关系
前面扯了很多,不过大多都是在讲CUDA 在软体层面的东西:接下来,虽然Heresy 自己也不熟,不过还是来研究一下硬体的部分吧-毕竟要最佳化的时候,好像还是要大概知道一下相关的东西的.这部分主要参考资 ...
- Node流操作(启动器forever)
详情: https://www.cnblogs.com/lalalagq/p/9749680.html 流:读取流,写入流,双向读写流. 读写流——压缩.加密 数据库不能直接接受流 sf.readFi ...
- [转帖]Grafana背后的Nginx和Apache Proxy
Grafana背后的Nginx和Apache Proxy https://ywnz.com/linuxyffq/5590.html 这个网站貌似非常非常好 在本文中,我将向你展示如何在Nginx和Ap ...
- Javascript - BOM 对象
浏览器相关的对象.获取浏览器相关的信息,可以设置和修改浏览器属性. 0. web-app 版 TodoList 小程序 用以下内容可以自己手写一个 TodoList 小程序,再添加几行代码就可以用手机 ...
- Magazine Delivery(POJ1695)【DP】
题意:要求用三辆车往n座城市投递货物,起点都在一号城市,每辆车可以载任意数量的货物,投递顺序必须与城市编号递增序一致,并且,每次同时都只能有一辆车在跑路.求最短总路径之和. 思路:每时每刻,能够充分决 ...
- k8s遇坑:The connection to the server k8s-api.virtual.local:6443 was refused - did you specify the right host or port?
k8s坑The connection to the server localhost:8080 was refused - did you specify the right host or port ...
- vs 2013 设置website项目端口
vs 2015/2013 设置website项目端口 在web项目创建之后,当我想重新debug时,出现the port xxx is in use 错误. 经过netstat分析,发现占用此项目端口 ...