51Testing软件测试论坛

标题: 求助啊 [打印本页]

作者: liang599176117    时间: 2011-7-28 22:52
标题: 求助啊
本帖最后由 liang599176117 于 2011-7-28 22:55 编辑

我是一个测试新手,在自学QTP中,今天在编写QTP脚本时遇到一个问题,很纠结,不知道怎么来的,哪个高手帮我解答一下吧,小生真的感激不尽啊,我的测试内容如下,
测试脚本是:
Dim mainmenu,submenu,premenu
mainmenu=datatable.RawValue("Parameter1","Action1")         
submenu=datatable.RawValue("Parameter2","Action1")                 
datatable.SetPrevRow
premenu=datatable.RawValue("Parameter1","Action1")
datatable.SetNextRow
If premenu=mainmenu Then
   print   "创建子菜单:"&submenu
else
   print   "创建菜单:"&mainmenu
   print   "创建子菜单:"&submenu
End If
数据表结构是(数据表名为Action1):
Parameter1     Parameter2
菜单1                    菜单1-1
菜单1                    菜单1-2
菜单2                    菜单2-1
菜单2                    菜单2-2
菜单3                    菜单3-1
菜单3                    菜单3-2
为什么运行出来是:
创建菜单:菜单1
创建子菜单:菜单1-1
创建子菜单:子菜单1-2
创建菜单:菜单2
创建子菜单:2-1
让我很纠结的是,在第一次执行if判断语句时,premenu应该是等于mainmenu的啊,为什么调试的时候把断点设在premenu赋值语句后时结果premenu是等于“”的呢?还有我有一个疑问就是第一次执行datatable.SetPrevRow和datatable.GetPrevRow时获取的是哪个值啊?哪个大虾帮我解答一下疑惑吧,在此先谢过了啊
作者: liang599176117    时间: 2011-7-29 22:19
怎么没有人回答呢  哪个好心人  救救我吧
作者: 17800455    时间: 2011-7-30 22:31
不加if  结果应该是这样的。 菜单1 --菜单1.1   --    菜单1--菜单1.2   你检查一下判读是不是有问题。
作者: 17800455    时间: 2011-7-30 22:31
不加if  结果应该是这样的。 菜单1 --菜单1.1   --    菜单1--菜单1.2   你检查一下判读是不是有问题。
作者: liang599176117    时间: 2011-8-2 22:32
本帖最后由 liang599176117 于 2011-8-2 22:41 编辑

回复 3# 17800455
不好意思哦  这几天工作比较忙  没怎么来弄这个  
首先感谢北极的雨好心来帮我解答    谢谢哦
然后我刚刚又仔细执行了下     在第一次赋值时  执行到premenu=datatable.RawValue("Parameter1","Action1")之前的时候   premenu还是空的   执行完以后premenu的值成了菜单3耶  不知道这是为什么哦  而且第二次执行这个语句的时候premenu又等于mainmenu 了  datatable.SetNextRow语句获取的是哪个下一行的值呀   不懂啊    不知道北极的雨可不可以解释下这二句语句具体是怎么执行的噢   谢谢哦
下面有我的具体调试图
[attach]74587[/attach]        [attach]74586[/attach]
作者: fengxinzi0151    时间: 2011-8-3 15:26
执行mainmenu=datatable.RawValue("Parameter1","Global")         
submenu=datatable.RawValue("Parameter2","Global")         这两句脚本时,数据表都是在第一行,然后用了datatable.SetPrevRow将上一行设置为当前行,刚执行时上一行是不存在的,默认值为空白,执行结束时会重新读取的,从空白行的前一行读取,不知道有没有错解释
作者: liang599176117    时间: 2011-8-3 22:13
回复 6# fengxinzi0151
在premenu=datatable.RawValue("Parameter1","Action1")之前premenu是为空的这我还能理解,毕竟还没赋值吗 可是为什么执行完赋值语句以后premenu是等于“菜单3”的哦  难道datatable.SetNextRow获取上一行的值时默认为第一行的前一行就是表的最后一行   所以赋值成了菜单3了   不知道可不可以这样理解哦  请各位朋友给点意见吧  谢谢了
作者: liang599176117    时间: 2011-8-3 22:37
终于明白了  我刚刚验证了一下   确实datatable.SetNextRow获取前一行时  如果当前是第一行 那么获取前一行时是获取的数据表中的最后一行   好像数据表在QTP中是个循环的一样的   感谢6#给我的启示啊




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