51Testing软件测试论坛

标题: SetCurrentRow怎么无效 [打印本页]

作者: KingRight    时间: 2009-1-19 14:24
标题: 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

作者: happychap    时间: 2009-1-19 16:58
好象可复用的Action并不与该Action的DataTable绑定吧。
通过参数来实现你的功能吧。
作者: KingRight    时间: 2009-1-19 17:07
原帖由 happychap 于 2009-1-19 16:58 发表
好象可复用的Action并不与该Action的DataTable绑定吧。
通过参数来实现你的功能吧。


我引用login的时候会提示是否引入dataTable,我选的是,这样目前的脚本就有了和login中一样的dataTable,上面的语句应该是针对当前脚本的dataTable而言的
作者: happychap    时间: 2009-1-19 17:12
遇到这种情况,我都是用给Action添加参数解决的。
作者: KingRight    时间: 2009-1-20 22:52
谢谢楼上的,但是你知道为什么我那样不行吗? 是哪里出了问题的?
作者: asoqa    时间: 2009-1-21 00:33
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 编辑 ]




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2