51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3380|回复: 6
打印 上一主题 下一主题

[原创] QTP循环+参数化问题,在线等

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-12-30 16:42:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我做了一个QTP自动化脚本,如下:
SystemUtil.Run "C:\Program Files\Internet Explorer\IEXPLORE.EXE","","C:\Documents and Settings\Administrator","open"
Browser("Browser").Page("Page").Sync
Browser("Browser").Navigate "http://192.168.1.35/vrveis"
Browser("Browser").Page("Web系统登陆").WebEdit("UserName").Set "admin"
Browser("Browser").Page("Web系统登陆").WebEdit("PassWord").SetSecure "4b3b0fec12727a561431c188074345fc18ab"
Browser("Browser").Page("Web系统登陆").Image("image").Click 5,5
Browser("Browser").Page("**").Frame("leftFrame").WebElement("RepLogin").Click
Browser("Browser").Page("**").Frame("leftFrame").Link("**").Click
For i = 1 to 3
Browser("Browser").Page("**").Frame("mainFrame").WebButton("**").Click
Browser("Browser").Window("信息分组 -- 网页对话框").Page("信息分组").WebList("nodetype").Select "用户类"
Browser("Browser").Window("信息分组 -- 网页对话框").Page("信息分组").WebEdit("nodename").Set DataTable("用户名", dtGlobalSheet)
Browser("Browser").Window("信息分组 -- 网页对话框").Page("信息分组").WebEdit("pwd").SetSecure "4b3b0ff9ca0109544c5bae7a47504905742aa03d2375c775106c"
Browser("Browser").Window("信息分组 -- 网页对话框").Page("信息分组").WebButton("保存").Click
Browser("Browser").Window("信息分组 -- 网页对话框").Dialog("Windows Internet Explorer").WinButton("确定").Click
Browser("Browser").Page("**").Sync
Next
Browser("Browser").Close

我想让QTP只循环里面的一部分内容,但是我做完循环后,QTP只读数据库里的第一个数据,如果不做循环可以读到所有的数据
请问我这个循环哪做的不对,谢谢
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2009-12-30 16:49:58 | 只看该作者
在next前DataTable.GetSheet("Global").SetNextRow
不过lz你把参数都放在global表里的话iteration会执行Golabl表里的行数的次数的
那样会重复运行的,建议放在local表里,整个iteration就只会执行一次

[ 本帖最后由 May_may 于 2009-12-30 16:52 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2009-12-31 10:03:45 | 只看该作者

回复 1# 的帖子

你所有的脚本放在一个action中,是不行的,脚本运行迭代一次只会从参数表中取出一个参数,而你的for循环只是脚本中的部份,无论你for循环设置多少次,它读出的数据永远是当前脚本运行时读出的数据,数据是不会变的。

要达到你想要的结果有两种方法:
第一:自己在for迭代中设置数组做参数迭代。

第二:你把参数化的脚本单独放在一个action中,把其iteration设置为所有。这样就会按你说的,有几个参数你那个action就运行几次,另外如2楼上所说,不要放在全局参数表中,那样相当于,整个场景迭代。放在当前脚本中,也就是只进行当前脚本迭代。

不知这样说你可明白。这也主要是QTP运行模式的问题,用多了自然就知道怎么回事了。刚开始多试几次。别人说的不如自己动手实践记得牢,学的多。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2009-12-31 10:07:56 | 只看该作者
感谢两位的帮助,问题已经用切割方法解决,你们的方法我也会去试试,非常感谢
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2009-12-31 10:08:56 | 只看该作者
如果有更多的方法,本人非常乐意跟大家学习!!!
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2009-12-31 10:22:10 | 只看该作者
在for循环中DataTable.GetSheet("Global").SetNextRow,下次执行for的时候参数就会指向下一行了啊,可以解决3楼所说的“无论你for循环设置多少次,它读出的数据永远是当前脚本运行时读出的数据,数据是不会变的。”
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2010-3-10 13:21:39 | 只看该作者
学习了
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-25 19:33 , Processed in 0.084181 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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