51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5181|回复: 22
打印 上一主题 下一主题

[原创] 怎样实现不同action的循环(for只能循环第一组数据)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-9-3 11:46:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
高手帮帮忙啊,怎样实现不同action的循环啊,第一个action是登陆,第二个action是有4组数据的录入操作,直接运行只会执行第一条数据然后就返回登陆,第二个action写个for循环的话是把第一组数据循环执行4次,下面的三组数据还是没有执行,要怎么办啊?

[ 本帖最后由 tyh860124 于 2008-9-3 12:08 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2008-9-3 14:51:24 | 只看该作者

自己解决了

DataTable.SetNextRow
在for循环最后面贴了这样一句代码就好了
遇到相同问题的可以试试
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-9-3 15:23:07 | 只看该作者
建议你吧第一个action分割为两个action
一个是登陆 一个是退出
这样就可以处理你的问题了

runaction--登陆
   循环action--数据录入
runaction--退出
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2008-9-3 15:49:41 | 只看该作者
我第一个action就是只有登录的,但是登录进去后录入数据就只执行第一组,然后又循环到登录就执行不下去了
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-9-3 16:10:25 | 只看该作者
不可能
你既然只有登陆动作
那执行完成后是不会又跳转到登陆窗口的吧
除非又有其他操作!

你吧代码拿出来看看吧
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2008-9-3 16:26:44 | 只看该作者
原帖由 kevin_swpi 于 2008-9-3 15:23 发表
建议你吧第一个action分割为两个action
一个是登陆 一个是退出
这样就可以处理你的问题了

runaction--登陆
   循环action--数据录入
runaction--退出



这个方法不错,关键在在"循环action--数据录入",就可以不用做FOR循环,只用
runaction "数据录入",allIterations
或者
runaction "数据录入",rngIterations,“1-4”,
我一般就这样做,而且可以做个参数返回值,根据返回的不同来调用不同的检查点。比如:
你录的4条数据,有的成功,有的失败,就可以通过返回
runaction "数据录入",rngIterations,“1-4”,类型
然后在用case或者IF来判断类型是什么,来调用不同的检查点action
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2008-9-3 16:49:32 | 只看该作者
这是action1
Dialog("Login").Check CheckPoint("Login")
Dialog("Login").WinEdit("Agent Name:").Set "tyhtyh"
Dialog("Login").WinEdit("Password:").SetSecure "48bdfdcfd2553e9cf85a4b16c27ccac9e2e5cb1d"
Dialog("Login").WinButton("OK").Click

这是action2
For  i=1 to DataTable.GetRowCount
Window("Flight Reservation").ActiveX("MaskEdBox").Type DataTable("Date_of_flight", dtGlobalSheet)
Window("Flight Reservation").WinComboBox("Fly From:").Select DataTable("Fly_from", dtGlobalSheet)
Window("Flight Reservation").WinComboBox("Fly To:").Select DataTable("Fly_to", dtGlobalSheet)
Window("Flight Reservation").WinButton("FLIGHT").Click
ItemCount=Window("Flight Reservation").Dialog("Flights Table").WinList("From").GetItemsCount'取得航班列表的行数
SelectItem=RandomNumber(0,ItemCount)'随机选取其中一项
Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select  SelectItem'选择航班
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
Window("Flight Reservation").WinEdit("Name:").Set "tyh"
Window("Flight Reservation").WinButton("Insert Order").Click
Window("Flight Reservation").Activate
Window("Flight Reservation").WinButton("Button").Click
Window("Flight Reservation").Activate
NEXT
小箭头指示第一条数据执行四遍,执行完之后又到action1,然后报不能识别的那个错误,我的date table有四条数据,为global,file里面的setting设置的是run on all rows,action里设置的都是run one,是什么问题啊?谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2008-9-3 20:01:37 | 只看该作者
原帖由 tyh860124 于 2008-9-3 16:49 发表
这是action1
Dialog("Login").Check CheckPoint("Login")
Dialog("Login").WinEdit("Agent Name:").Set "tyhtyh"
Dialog("Login").WinEdit("Password:").SetSecure "48bdfdcfd2553e9cf85a4b16c27ccac9e2e5cb1d"
...


……
你这样循环要是不用第一个那才怪呢
你没有用SetNextRow
在循环中加入
DataTable.SetNextRow
这样才会让当前行引用下移的,不然一直调的都是第一个
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2008-9-4 09:02:37 | 只看该作者
原帖由 tyh860124 于 2008-9-3 16:49 发表
这是action1
Dialog("Login").Check CheckPoint("Login")
Dialog("Login").WinEdit("Agent Name:").Set "tyhtyh"
Dialog("Login").WinEdit("Password:").SetSecure "48bdfdcfd2553e9cf85a4b16c27ccac9e2e5cb1d"
...


在next前面加上datatable.SetNextRow
就能够循环你所在的四条数据了
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2008-9-4 09:06:16 | 只看该作者
"小箭头指示第一条数据执行四遍,执行完之后又到action1,然后报不能识别的那个错误"
这个原因不太清楚
你是如何组织你这些action的?
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2008-9-4 09:26:35 | 只看该作者

回复 9# 的帖子

已经好了
谢谢你
我直接insert call to new action的
直接在一个action里面把所有内容都写进去也是只执行第一组数据后就回到第一行
不是在date table里面写四组数据会自动执行四次的吗?
怎么会执行完第一遍就回到第一行重新开始执行呢?
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2008-9-4 09:31:51 | 只看该作者

回复 8# 的帖子

已经好了
还是谢谢你
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2008-9-4 10:40:14 | 只看该作者
原帖由 tyh860124 于 2008-9-4 09:26 发表
已经好了
谢谢你
我直接insert call to new action的
直接在一个action里面把所有内容都写进去也是只执行第一组数据后就回到第一行
不是在date table里面写四组数据会自动执行四次的吗?
怎么会执行完第一遍就回 ...


你删除原来存在得action1 action2
然后将所有代码重新copy进去
再执行一次看看
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2008-9-4 11:12:31 | 只看该作者
原帖由 tyh860124 于 2008-9-4 09:26 发表
已经好了
谢谢你
我直接insert call to new action的
直接在一个action里面把所有内容都写进去也是只执行第一组数据后就回到第一行
不是在date table里面写四组数据会自动执行四次的吗?
怎么会执行完第一遍就回 ...


你的想法没错,只是你的数据放错地方了
如果你只想让Action2去循环执行参数,那就要把数据填入data table中sheet名为Action2的表格中
你填入Global,自然是全局都循环了,也就是Action1和Action2一起循环了
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2008-9-4 11:15:40 | 只看该作者
原帖由 rcpp 于 2008-9-4 11:12 发表


你的想法没错,只是你的数据放错地方了
如果你只想让Action2去循环执行参数,那就要把数据填入data table中sheet名为Action2的表格中
你填入Global,自然是全局都循环了,也就是Action1和Action2一起循环了


受教了
这个东西我还没有考虑过
应该就是楼主那个问题的根本原因了吧
回复 支持 反对

使用道具 举报

该用户从未签到

16#
 楼主| 发表于 2008-9-4 11:34:39 | 只看该作者
谢谢楼上两位啦
明白一点了
那我如果是在一个action里面写四条数据还是执行第一条就从代码第一行重新开始执行了啊

[ 本帖最后由 tyh860124 于 2008-9-4 11:40 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2008-9-4 11:49:28 | 只看该作者

rcpp已经说的狠清楚了"把数据填入data table中sheet名为Action2的表格中",不要放到Global

另外在循环代码中加入语句
for i=1 to ..
    ...
    datatable.setnextrow
nex
回复 支持 反对

使用道具 举报

该用户从未签到

18#
 楼主| 发表于 2008-9-4 11:55:53 | 只看该作者
刚刚试了一下
把数据写到action2的data table里面还是不能循环四组数据
只执行第一组就停掉了
加入Data Table.SetNextRow就可以循环
但是不应该是data table写有四组数据会自动执行四次的吗?
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2008-9-4 12:00:00 | 只看该作者
原帖由 tyh860124 于 2008-9-4 11:55 发表
刚刚试了一下
把数据写到action2的data table里面还是不能循环四组数据
只执行第一组就停掉了
加入Data Table.SetNextRow就可以循环
但是不应该是data table写有四组数据会自动执行四次的吗?


http://bbs.51testing.com/thread-125852-1-1.html
看一下这个你就明白了
你只差一步就可以了,因为没有告诉Action单独怎么循环,它默认自己只执行一次的
回复 支持 反对

使用道具 举报

该用户从未签到

20#
 楼主| 发表于 2008-9-4 13:35:27 | 只看该作者
果然可以了
太感谢了
谢谢谢谢谢谢
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-28 08:33 , Processed in 0.083730 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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