51Testing软件测试论坛

标题: QTP Tutorial 中的订票操作参数化后无法运行第二行 [打印本页]

作者: gegewu2009    时间: 2009-9-1 10:10
标题: QTP Tutorial 中的订票操作参数化后无法运行第二行
qtp运行脚本如下:
Dialog("Login").Check CheckPoint("Login")
Dialog("Login").Activate        ' 打开登录界面
RunAction "Action_help", oneIteration
Dialog("Login").WinButton("Help").Click
Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click
Dialog("Login").WinButton("Help").Click
Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click
Reporter.ReportEvent micDone, "login", "开始登陆操作"
Dialog("Login").WinEdit("Agent Name:").Set "MERCURY"        ' 输入代理机构名
Dialog("Login").WinEdit("Agent Name:").Type  micTab        ' 输入光标切换到密码列
Dialog("Login").WinEdit("Agent Name:").Output CheckPoint("Agent Name:")
Dialog("Login").WinEdit("Password:").Output CheckPoint("Password:_2")
Dialog("Login").WinEdit("Password:").SetSecure "4a8e02d7e1853f24cca1cdf02380c10784b4362e"        ' 输入登录密码
Dialog("Login").WinButton("OK").Click
Reporter.ReportEvent micDone, "login", "完成登录操作"
Window("Flight Reservation").ActiveX("MaskEdBox").Type DataTable("Fly_data", dtGlobalSheet)
Window("Flight Reservation").WinComboBox("Fly From:").Select DataTable("Fly_from", dtGlobalSheet)
Window("Flight Reservation").WinComboBox("Fly To:").Select DataTable("Fly_to", dtGlobalSheet)
Window("Flight Reservation").WinButton("FLIGHT").Click
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
Window("Flight Reservation").WinEdit("Name:").Set "LCL"
Window("Flight Reservation").Static("Tickets:").Click
Window("Flight Reservation").WinButton("Insert Order").Click
Window("Flight Reservation").WinButton("FLIGHT").Click
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
Window("Flight Reservation").Close

过程中参数化了Fly_from ,Fly_to,Fly_data, 在data table表中输入了两行参数,运行后第一行可以正常运行,第二行参数无法运行,提示信息如下:

Cannot identify the object "Login" (of class Dialog). Verify that this object's properties match an object currently displayed in your application.

Line (1): "Dialog("Login").Check CheckPoint("Login")".

Tip: If the objects in your application have changed, the Maintenance Run Mode can
help you identify and update your steps and/or the objects in your repository.

不知道怎么回事啊,为什么运行第二行的时候不能识别login对话框呢,希望高手帮忙解释解决下,谢了
作者: kings727    时间: 2009-9-1 13:45
建议先查看下对象库中("Login"),可以用高亮按钮查看下对象。
作者: liujinkui    时间: 2009-9-1 13:49
1.加一条,DataTable.SetNextRow
作者: kings727    时间: 2009-9-1 13:56
揣测:
是运行第二次,报错还是运行第2行报错。
我开始以为我看清楚了,再看又糊涂了。
如果是第二次,应该就是楼上的解法。
作者: yinbing.2009    时间: 2009-9-1 14:33
我也遇到过这个问题,参数化的时候经常报无法识别的错误
作者: gegewu2009    时间: 2009-9-1 14:45
是能正常运行第一行参数,第一行参数运行完后自动又从脚本第一行开始运行这个就报错,DataTable.SetNextRow这条加在哪呢,我在几个地方都试了下不起作用
作者: shotstar    时间: 2009-9-1 20:41
看楼上这个答复,我估计是运行第二轮吧。
LZ的dataTable里面的数据是有2行么?或者是第一行有数据,第二行有一条黑线?
建议选择File-Setting,选择Run的Table页,看看是不是选择的是run allrows,如果你只想运行一次,请改成run oneiteration,好像是这个单词吧。
因为你第一次执行完之后,这个Window已经被关闭了,第二次运行的时候估计没有打开Dialog,导致识别不到对象。
如果你想运行2次以上,需要解决第二次执行打开Dialog的问题。我估计第一次是用QTP本身帮你打开的程序,建议要循环多次不要用那个,修改一下Recording and Run Setting,将Windows页的改成不打开任何程序。
然后在第一行加上 Run "程序的地址" 不记得是不是这么写了,或者试试 Systemutil.Run "程序的地址"
作者: walker1020    时间: 2009-9-2 10:08
怎么大家都没有搜索论坛的习惯?怎么没有去[QTP精华区] 看帖子的习惯?
在[QTP精华区]里面,赫然有一篇 《QTP Tutorial 中的订票操作参数化后无法运行第二行的解决方法》!
作者: gegewu2009    时间: 2009-9-2 10:45
原帖由 shotstar 于 2009-9-1 20:41 发表
看楼上这个答复,我估计是运行第二轮吧。
LZ的dataTable里面的数据是有2行么?或者是第一行有数据,第二行有一条黑线?
建议选择File-Setting,选择Run的Table页,看看是不是选择的是run allrows,如果你只想运行一 ...


谢谢shorstar,问题解决了
作者: zhjl5661990    时间: 2010-12-16 15:00
看了还是不会




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2