今天BSTT群里有群友碰到一个问题Datatable读取第二行报错,示例如下.
Dialog("Login").WinEdit("Agent Name:").Set DataTable("name", dtGlobalSheet)
Dialog("Login").WinEdit("Agent Name:").Type micTab
Dialog("Login").WinEdit("Password:").SetSecure DataTable("password", dtGlobalSheet)
Dialog("Login").WinButton("OK").Click
Window("Flight Reservation").Close
对登录的用户名“Agent Name”和“Password”使用Datatable进行了参数化,回放是发现Datatable读取第二行报错。
修证如下:将record and run settings中选项设置为“record and run test on and open……”,代码修改如下。
SystemUtil.Run "D:\Program Files\HP\QuickTest Professional\samples\flight\app\flight4a.exe","", "D:\Program Files\HP\QuickTest Professional\samples\flight\app\", "open"
Dialog("Login").WinEdit("Agent Name:").Set DataTable("name", dtGlobalSheet)
Dialog("Login").WinEdit("Agent Name:").Type micTab
Dialog("Login").WinEdit("Password:").SetSecure DataTable("password", dtGlobalSheet)
Dialog("Login").WinButton("OK").Click
Window("Flight Reservation").Close
原因分析:原来record and run settings中选项设置为“applications specified below”程序fight只运行一次,回放循环时是不会再运行fight一次的。直接” Dialog("Login").WinEdit("Agent Name:").Set DataTable("name", dtGlobalSheet)开始,而这时实际”Dialog("Login")对象是没有打开的,怎么可能会成功呢。现在解决的方法是直接SystemUtil.Run函数打开fight,不通过QTP来打开fight,这样就不存在问题了。