tyh860124 发表于 2008-9-3 11:46:38

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

高手帮帮忙啊,怎样实现不同action的循环啊,第一个action是登陆,第二个action是有4组数据的录入操作,直接运行只会执行第一条数据然后就返回登陆,第二个action写个for循环的话是把第一组数据循环执行4次,下面的三组数据还是没有执行,要怎么办啊?

[ 本帖最后由 tyh860124 于 2008-9-3 12:08 编辑 ]

tyh860124 发表于 2008-9-3 14:51:24

自己解决了

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

kevin_swpi 发表于 2008-9-3 15:23:07

建议你吧第一个action分割为两个action
一个是登陆 一个是退出
这样就可以处理你的问题了

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

tyh860124 发表于 2008-9-3 15:49:41

我第一个action就是只有登录的,但是登录进去后录入数据就只执行第一组,然后又循环到登录就执行不下去了

kevin_swpi 发表于 2008-9-3 16:10:25

不可能
你既然只有登陆动作
那执行完成后是不会又跳转到登陆窗口的吧
除非又有其他操作!

你吧代码拿出来看看吧

lijian422202 发表于 2008-9-3 16:26:44

原帖由 kevin_swpi 于 2008-9-3 15:23 发表 http://bbs.51testing.com/images/common/back.gif
建议你吧第一个action分割为两个action
一个是登陆 一个是退出
这样就可以处理你的问题了

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


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

tyh860124 发表于 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
Fori=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").SelectSelectItem'选择航班
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,是什么问题啊?谢谢

rcpp 发表于 2008-9-3 20:01:37

原帖由 tyh860124 于 2008-9-3 16:49 发表 http://bbs.51testing.com/images/common/back.gif
这是action1
Dialog("Login").Check CheckPoint("Login")
Dialog("Login").WinEdit("Agent Name:").Set "tyhtyh"
Dialog("Login").WinEdit("Password:").SetSecure "48bdfdcfd2553e9cf85a4b16c27ccac9e2e5cb1d"
...

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

kevin_swpi 发表于 2008-9-4 09:02:37

原帖由 tyh860124 于 2008-9-3 16:49 发表 http://bbs.51testing.com/images/common/back.gif
这是action1
Dialog("Login").Check CheckPoint("Login")
Dialog("Login").WinEdit("Agent Name:").Set "tyhtyh"
Dialog("Login").WinEdit("Password:").SetSecure "48bdfdcfd2553e9cf85a4b16c27ccac9e2e5cb1d"
...

在next前面加上datatable.SetNextRow
就能够循环你所在的四条数据了

kevin_swpi 发表于 2008-9-4 09:06:16

"小箭头指示第一条数据执行四遍,执行完之后又到action1,然后报不能识别的那个错误"
这个原因不太清楚
你是如何组织你这些action的?

tyh860124 发表于 2008-9-4 09:26:35

回复 9# 的帖子

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

tyh860124 发表于 2008-9-4 09:31:51

回复 8# 的帖子

已经好了
还是谢谢你

kevin_swpi 发表于 2008-9-4 10:40:14

原帖由 tyh860124 于 2008-9-4 09:26 发表 http://bbs.51testing.com/images/common/back.gif
已经好了
谢谢你
我直接insert call to new action的
直接在一个action里面把所有内容都写进去也是只执行第一组数据后就回到第一行
不是在date table里面写四组数据会自动执行四次的吗?
怎么会执行完第一遍就回 ...

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

rcpp 发表于 2008-9-4 11:12:31

原帖由 tyh860124 于 2008-9-4 09:26 发表 http://bbs.51testing.com/images/common/back.gif
已经好了
谢谢你
我直接insert call to new action的
直接在一个action里面把所有内容都写进去也是只执行第一组数据后就回到第一行
不是在date table里面写四组数据会自动执行四次的吗?
怎么会执行完第一遍就回 ...

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

kevin_swpi 发表于 2008-9-4 11:15:40

原帖由 rcpp 于 2008-9-4 11:12 发表 http://bbs.51testing.com/images/common/back.gif


你的想法没错,只是你的数据放错地方了
如果你只想让Action2去循环执行参数,那就要把数据填入data table中sheet名为Action2的表格中
你填入Global,自然是全局都循环了,也就是Action1和Action2一起循环了
:lol
受教了
这个东西我还没有考虑过
应该就是楼主那个问题的根本原因了吧

tyh860124 发表于 2008-9-4 11:34:39

谢谢楼上两位啦
明白一点了
那我如果是在一个action里面写四条数据还是执行第一条就从代码第一行重新开始执行了啊

[ 本帖最后由 tyh860124 于 2008-9-4 11:40 编辑 ]

kevin_swpi 发表于 2008-9-4 11:49:28

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

另外在循环代码中加入语句
for i=1 to ..
    ...
    datatable.setnextrow
nex

tyh860124 发表于 2008-9-4 11:55:53

刚刚试了一下
把数据写到action2的data table里面还是不能循环四组数据
只执行第一组就停掉了
加入Data Table.SetNextRow就可以循环
但是不应该是data table写有四组数据会自动执行四次的吗?

rcpp 发表于 2008-9-4 12:00:00

原帖由 tyh860124 于 2008-9-4 11:55 发表 http://bbs.51testing.com/images/common/back.gif
刚刚试了一下
把数据写到action2的data table里面还是不能循环四组数据
只执行第一组就停掉了
加入Data Table.SetNextRow就可以循环
但是不应该是data table写有四组数据会自动执行四次的吗?

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

tyh860124 发表于 2008-9-4 13:35:27

果然可以了
太感谢了
谢谢谢谢谢谢
页: [1] 2
查看完整版本: 怎样实现不同action的循环(for只能循环第一组数据)