昨天对QTP自带的飞机订票系统进行了相关的录制。主要针对用户登录,即用户名及密码的输入进行自动化测试。测试思想为:以本地表中的内容对用户名及密码进行组合输入,当输入的用户名或者密码错误,点击OK的时候,会弹出错误提示框,这时按“确定”按钮,再重新输入用户名和密码,直至用户名和密码都正确,进入到主界面进行相关飞机订票操作。
所设计的测试用例为:
Agent Name | Password | 预期输出 |
<为空> | <为空> | Please enter agent name |
<为空> | Test <错误密码> | Please enter agent name |
<为空> | MERCURY <正确密码> | Please enter agent name |
test | <为空> | Please enter password |
test | Test <错误密码> | Incorrect password.Please try again |
test | MERCURY <正确密码> |
|
一、录制了一个正常的登录以及订票流程,操作步骤如下:
1、输入正确的用户名及密码(test MERCURY) 点击OK
2、进入主界面输入时间090925,出发地选择London ,目的地选择Frankfurt
3、点击FLIGHT,选择其中一个航班,点击OK
4、输入用户名:gege
5、点击Insert Order
6、点击File->Exit 退出主界面
二、对用户名和密码进行了参数化的操作,并在专家视图中使用for循环对本地表中的用户名、密码进行一个循环输入。
三、针对错误的用户名或密码会有错误提示框的出现,因此使用对象查看器对错误提示框进行了捕获。在专家视图中使用If语句对错误提示框是否存在进行判断,若存在则点击错误提示框中的“确定”按钮。
专家视图代码如下:
'登录部分
Dim i '定义行号
For i=1 to datatable.GetSheet("Action1").getrowcount
Dialog("Login").WinEdit("Agent Name:").Set DataTable("name", dtLocalSheet)
Dialog("Login").WinEdit("Agent Name:").Type micTab
Dialog("Login").WinEdit("Password:").SetSecure DataTable("password", dtLocalSheet)
Dialog("Login").WinButton("OK").Click
If Dialog("Login").Dialog("text:=Flight Reservations").Exist Then
'在 text 与 = 号之间还有一个冒号 :
Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click
End If
Next
'主界面部分
Window("Flight Reservation").ActiveX("MaskEdBox").Type "090925"
Window("Flight Reservation").WinComboBox("Fly From:").Select "London"
Window("Flight Reservation").WinComboBox("Fly To:").Select "Frankfurt"
Window("Flight Reservation").WinButton("FLIGHT").Click
Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select "12488 LON 08:00 AM FRA 08:45 AM AA $105.40"
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
Window("Flight Reservation").WinEdit("Name:").Set "gege"
Window("Flight Reservation").WinButton("Insert Order").Click
Window("Flight Reservation").WinButton("Button").Click
Window("Flight Reservation").WinMenu("Menu").Select "File;Exit"
出现的问题:重新运行脚本并查看结果,发现软件只针对本地表用户名、密码的第一行进行了6次操作。即令用户名及密码都为空,点击OK,出现错误提示框,点击“确定”,这一段操作重复6次。然后必须手动输入正确密码后,才能进入主界面,后续操作正常进行。
问题解决:通过别人提醒发现,for循环中,只定义了循环的次数,却没有获取本地表每一行的数据,于是在for语句后加上datatable.LocalSheet.SetCurrentRow i后,脚本成功运行。