51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2927|回复: 13
打印 上一主题 下一主题

[原创] 【重要】很多人都在问,QTP数值参数化后,如何循环其表中数据呢?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-10-20 20:11:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在工作中遇上了这个问题,想从网上寻找答案,但是发现都不行。

比如我想让一下数据循环100次。
表中数据:
userid   passwd
0001      123
0002      235
0005      256

效果如:
(0001,123)
(0002,235)
(0005 ,256)为1次循环,接着做第二次循环。。。。

应该怎么处理呢,很多同仁都问过这个问题,
但是一直无法从网上信息得到答案,在此特请高手大侠们指点一下。
在下感激不尽。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-10-21 09:40:32 | 只看该作者
代码代码。。。套个FOR循环就是了
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2010-10-21 09:44:36 | 只看该作者
本帖最后由 wugecat 于 2010-10-21 09:47 编辑

先定义一个Action2里面填入你的数据,然后设置成运行所有行,外面在套一个Action1循环调用Action2100次
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2010-10-21 09:58:37 | 只看该作者
3楼的   能不能将方法说的具体一点呢
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2010-10-21 10:14:42 | 只看该作者
3楼的方案是不行的。这样做就循环每一行100次,再循环第二行
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2010-10-21 10:27:34 | 只看该作者
本帖最后由 lantianwei 于 2010-10-21 10:28 编辑

很简单,QTP很久不用 只能写伪码
FOR i=1 to iTimes '你想运行的次数
for iRow=1 to 100 '运行表里的数据
   datatable.SetRow iRow ‘定位到第几行
    sUserName=GetData("Userid",datatable) ’获取当前行的USERID列数据
    sPassword=GetData("passwrod",datatable) ‘获取当前行PASSWORD列数据
  next ’定位到下一行
next ‘执行下一次循环

其实思路有很多种~
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2010-10-21 10:43:54 | 只看该作者
比如表里3行,总的要循环100次表
for a = 1 to 100
for i = 1 to 3
aaaa = DataTable.GetSheet("xxx").GetParameter("yyy").ValueByRow(i)
'想干嘛干嘛
next
next
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2010-10-21 10:47:12 | 只看该作者
本帖最后由 wugecat 于 2010-10-21 10:51 编辑
3楼的方案是不行的。这样做就循环每一行100次,再循环第二行
唐伯虎点蚊香 发表于 2010-10-21 10:14

怎么会不行..你吧数据加到Action2里不就完了
'ACtion1
For i=1 to 2
RunAction "Action2", allIterations
Next

'Action2
msgbox datatable("A","Action2")
Action2数据表:
A
1
2
3
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2010-10-21 11:01:00 | 只看该作者
很简单,QTP很久不用 只能写伪码
FOR i=1 to iTimes '你想运行的次数
for iRow=1 to 100 '运行表里的数据 ...
lantianwei 发表于 2010-10-21 10:27



   就是这样吧
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2010-10-25 10:35:23 | 只看该作者
实用2个for循环的方法应该是可以的,但是我个人觉得实用ation调用的方法比较好些,如:
Ation1中:
Browser("离线下载-登录").Page("离线下载-登录").WebEdit("u").Set DataTable("userid", dtLocalSheet)
        Browser("离线下载-登录").Page("离线下载-登录").WebEdit("WebEdit").SetSecure DataTable("passwd2", dtLocalSheet)
        Browser("离线下载-登录").Page("离线下载-登录").WebButton("登 录").Click
        Browser("离线下载-登录").Page("离线下载").Link("退出").Click

'Action2,在Action2中调用Acion1
For Iterator = 1 To 1000 Step 1
        RunAction "Action1", allIterations
Next

这样的话,Action1还可以被多个action重复的调用,大家觉得呢?
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2010-10-25 10:41:57 | 只看该作者
本帖最后由 lantianwei 于 2010-10-25 10:43 编辑

没有绝对的好坏 看你喜欢action还是function
action无非是把function进行了一个包装 让你更直观的感受它罢了 没有什么本质的区别
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2010-10-25 14:10:55 | 只看该作者
直接设置迭代次数啊!让Action反复的跑
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2011-2-22 12:23:01 | 只看该作者
如果是global参数时,通过你的设置是可以循环3次,但在dtLocalSheet参数化时,还要设置一下action的属性。
方法:找到QTP最左边一栏,Test Flow中的Action,右键点击预设置循环的Action图标,选择 Action Call Properties...——Run——>Run on all rows,然后执行脚本就可以正确循环了。
这种方法不用去修改代码,很方便的,呵呵,我上次也遇到过这样的问题,还是在网上找到的答案,希望对你有帮助。
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2011-2-22 14:19:00 | 只看该作者
自己手写循环语句,控制循环次数.
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-20 20:42 , Processed in 0.076317 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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