51Testing软件测试论坛

标题: 共享一下使用Import Excel的体会 [打印本页]

作者: hxa2010    时间: 2006-12-30 17:31
标题: 共享一下使用Import Excel的体会
以下其实是一个很微不足道的问题,对于非新手没什么意义,但是我共享出来,希望跟我一样的新手看了之后,有所领会,以后少走这方面的弯路
希望大家把实际操作过程中解决的问题共享出来,共同进步^_^

在使用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读取下一行,这样就如预期结果了.
作者: denisye    时间: 2006-12-30 17:48
思考,总结,提高,分享
技术水平要高,人的素质更要高
谢谢楼主的分享sdlkfj2
作者: appc618    时间: 2006-12-30 20:22
赞赏这样的分享精神!顶!
作者: Coffey111111    时间: 2006-12-31 09:23
楼主的精神可佳~~
作者: miniyal    时间: 2006-12-31 10:40
哈哈,学习雷锋好榜样~~
作者: No1    时间: 2007-1-4 17:41
如果放在这个action之前,则只读入a.xls一次,加上执行过程中有了SetNextRow读取下一行,这样就如预期结果了.

新建个Action 然后读入a.xls? 接着才是Action2?
就是说Action里包含datatable.Import("c:\a.xls") --------〉Action2?
作者: hxa2010    时间: 2007-1-4 17:46
是的,不要放到同一个Action,至于有没有其他办法我就不知道了,我也是新新手,哈哈
作者: xihong2004    时间: 2007-1-6 17:29
共同学习,共同进步
作者: wangxinwen    时间: 2007-1-17 16:28
共同进步
作者: walker1020    时间: 2007-1-18 09:11
向楼主学习!楼主能自己发现问题、分析问题、解决问题,此等精神值得我们学习!
作者: viviv_wang    时间: 2007-1-26 16:14
我在测试中也发现了全局变量和局部变量之间的问题,经常要调试多次才明白.
作者: nk9841    时间: 2007-1-26 16:32
感谢~~~~
作者: suifengpiao    时间: 2007-2-25 13:03
谢谢楼主的无私奉献
作者: nangfeng    时间: 2007-9-3 12:46
最近我也遇到同样的问题。

我用的方法不是使用多Action,而是把import语句写在一个vbs文件中(和Function/Sub/Const放在一起),并且把vbs关联到此Action。这样执行action之前,就能自动加载了。

效果和使用多个Action一样sdlkfj2  不过不知道会不会有啥后遗症
作者: danmy    时间: 2007-9-3 16:56
把action设置成run on all rows,setting里设置成run one iteration应该也可以

我现在就是在action里import的
作者: danmy    时间: 2007-9-3 16:58
import不行因为把global也引入了,用importsheet就可以了
作者: henhenchen    时间: 2007-9-4 01:48
标题: 只是ACTION2 需要IMPORTSHEET. 而人为地
把他放在其他的ACTION 中. 我觉的不是个好的CODING 方法. 可以这样: 设个ENVIRONMETN 变量在ACTION2 中. 每IMPORT 一次让它加1 .(这就是我们想要的行数)




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