|
以下其实是一个很微不足道的问题,对于非新手没什么意义,但是我共享出来,希望跟我一样的新手看了之后,有所领会,以后少走这方面的弯路
希望大家把实际操作过程中解决的问题共享出来,共同进步^_^
在使用Import Excel的过程中,遇到以下问题:明明从外面导进来的Excel表格中有多行不同的数据,导入到QTP中正确,但是就是只执行第一行的代码,起初感到非常奇怪.代码如下(Action2):
datatable.Import("c:\a.xls")
Window("Flight Reservation").WinMenu("Menu").Select "File;Open Order..."
Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Customer Name").Check CheckPoint("Customer Name")
Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Order No.").Set "ON"
Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Order No.").Check CheckPoint("Order No._4")
Window("Flight Reservation").Dialog("Open Order").WinEdit("Edit").Check CheckPoint("Edit_2")
Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Order No.").Set "ON"
Window("Flight Reservation").Dialog("Open Order").WinEdit("Edit").Set DataTable("OrderNo_p", dtLocalSheet)
DataTable.GetSheet("Copy of Action1_2").SetNextRow
Window("Flight Reservation").Dialog("Open Order").WinButton("OK").Click
Window("Flight Reservation").WinButton("Update Order").Click
Window("Flight Reservation").Activate
该代码运行的结果就是在测试结果中只显示第一行的数据,其他行数据不执行,仔细推敲,把datatable.Import("c:\a.xls")放到包含这段代码的Action这前,测试结果如预期所要
终于明白了原因:由于对Action2(以上代码)进行了参数化,并设置了"Run on all rows",进行的是多次执行,这种情况下,把datatable.Import("c:\a.xls")放到同一个action中,则每一次都是从头往a.xls中读取初始数据,取的必定是第一行数据(虽然在后面加了SetNextRow来读取下一行,但是重新读取表格使得setNextRow失去了实际作用),如果放在这个action之前,则只读入a.xls一次,加上执行过程中有了SetNextRow读取下一行,这样就如预期结果了. |
|