51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3920|回复: 16
打印 上一主题 下一主题

[原创] 共享一下使用Import Excel的体会

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-12-30 17:31:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以下其实是一个很微不足道的问题,对于非新手没什么意义,但是我共享出来,希望跟我一样的新手看了之后,有所领会,以后少走这方面的弯路
希望大家把实际操作过程中解决的问题共享出来,共同进步^_^

在使用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读取下一行,这样就如预期结果了.
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-12-30 17:48:49 | 只看该作者
思考,总结,提高,分享
技术水平要高,人的素质更要高
谢谢楼主的分享sdlkfj2
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2006-12-30 20:22:11 | 只看该作者
赞赏这样的分享精神!顶!
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2006-12-31 09:23:59 | 只看该作者
楼主的精神可佳~~
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2006-12-31 10:40:37 | 只看该作者
哈哈,学习雷锋好榜样~~
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2007-1-4 17:41:53 | 只看该作者
如果放在这个action之前,则只读入a.xls一次,加上执行过程中有了SetNextRow读取下一行,这样就如预期结果了.

新建个Action 然后读入a.xls? 接着才是Action2?
就是说Action里包含datatable.Import("c:\a.xls") --------〉Action2?
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2007-1-4 17:46:24 | 只看该作者
是的,不要放到同一个Action,至于有没有其他办法我就不知道了,我也是新新手,哈哈
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2007-1-6 17:29:10 | 只看该作者
共同学习,共同进步
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2007-1-17 16:28:24 | 只看该作者
共同进步
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    10#
    发表于 2007-1-18 09:11:55 | 只看该作者
    向楼主学习!楼主能自己发现问题、分析问题、解决问题,此等精神值得我们学习!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2007-1-26 16:14:27 | 只看该作者
    我在测试中也发现了全局变量和局部变量之间的问题,经常要调试多次才明白.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2007-1-26 16:32:21 | 只看该作者
    感谢~~~~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2007-2-25 13:03:16 | 只看该作者
    谢谢楼主的无私奉献
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
    发表于 2007-9-3 12:46:53 | 只看该作者
    最近我也遇到同样的问题。

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

    效果和使用多个Action一样sdlkfj2  不过不知道会不会有啥后遗症
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2007-9-3 16:56:26 | 只看该作者
    把action设置成run on all rows,setting里设置成run one iteration应该也可以

    我现在就是在action里import的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
    发表于 2007-9-3 16:58:28 | 只看该作者
    import不行因为把global也引入了,用importsheet就可以了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
    发表于 2007-9-4 01:48:37 | 只看该作者

    只是ACTION2 需要IMPORTSHEET. 而人为地

    把他放在其他的ACTION 中. 我觉的不是个好的CODING 方法. 可以这样: 设个ENVIRONMETN 变量在ACTION2 中. 每IMPORT 一次让它加1 .(这就是我们想要的行数)
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-26 03:31 , Processed in 0.077143 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表