KingRight 发表于 2009-1-19 14:24:10

SetCurrentRow怎么无效

我有个resuable action,名字叫login,代码如下:

Browser("web1").Page("page1").WebEdit("email").Set DataTable("Email", dtLocalSheet)
Browser("web1").Page("page1").WebEdit("password").SetSecure "5345325325325ewr34r5324325r436343532"
Browser("web1").Page("page1").WebButton("登录").Click

在datatable的login的sheet中有两行Email
---------------------------------
然后在另外一个脚本中进行了调用,我是想先登录,判断currentrow,如果是1就退出再用B登录,如果是2就退出再用A登录。脚本如下

'当前行
currentrow = DataTable.GetSheet("login").GetCurrentRow()
'退出
RunAction "logout", oneIteration

'用另一用户登录
If currentrow = 1 Then
DataTable.GetSheet("login").SetCurrentRow(2)
else
DataTable.GetSheet("login").SetCurrentRow(1)
End If

'登录
RunAction "login", oneIteration

currentrow 都正确得出了,但是运行的时候发现,脚本运行了两次,两次都是用的一个Email登录的,而第二次没有改变。
请高手帮忙看看是什么原因啊,谢谢。

[ 本帖最后由 KingRight 于 2009-1-19 14:26 编辑 ]

KingRight 发表于 2009-1-19 14:49:04

:Q :Q :Q :Q :Q :Q :Q :Q :Q :Q

happychap 发表于 2009-1-19 16:58:33

好象可复用的Action并不与该Action的DataTable绑定吧。
通过参数来实现你的功能吧。

KingRight 发表于 2009-1-19 17:07:30

原帖由 happychap 于 2009-1-19 16:58 发表 http://bbs.51testing.com/images/common/back.gif
好象可复用的Action并不与该Action的DataTable绑定吧。
通过参数来实现你的功能吧。

我引用login的时候会提示是否引入dataTable,我选的是,这样目前的脚本就有了和login中一样的dataTable,上面的语句应该是针对当前脚本的dataTable而言的

happychap 发表于 2009-1-19 17:12:55

遇到这种情况,我都是用给Action添加参数解决的。

KingRight 发表于 2009-1-20 22:52:32

谢谢楼上的,但是你知道为什么我那样不行吗? 是哪里出了问题的?

asoqa 发表于 2009-1-21 00:33:47

runaction方法在读datatable的光标是独立的,我想很可能和这个有关系。你有两个脚本,一个登录脚本,一个调用脚本,你的email是放在登录脚本的sheet中吧,如果想达到你的目的,应该将下面这段代码放到login方法中
currentrow = DataTable.GetSheet("login").GetCurrentRow()
'用另一用户登录
If currentrow = 1 Then
DataTable.GetSheet("login").SetCurrentRow(2)
else
DataTable.GetSheet("login").SetCurrentRow(1)
End If

[ 本帖最后由 asoqa 于 2009-1-21 00:43 编辑 ]
页: [1]
查看完整版本: SetCurrentRow怎么无效