liang599176117 发表于 2011-7-28 22:52:39

求助啊

本帖最后由 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:22

怎么没有人回答呢哪个好心人救救我吧:'(

17800455 发表于 2011-7-30 22:31:06

不加if结果应该是这样的。 菜单1 --菜单1.1   --    菜单1--菜单1.2   你检查一下判读是不是有问题。

17800455 发表于 2011-7-30 22:31:18

不加if结果应该是这样的。 菜单1 --菜单1.1   --    菜单1--菜单1.2   你检查一下判读是不是有问题。

liang599176117 发表于 2011-8-2 22:32:18

本帖最后由 liang599176117 于 2011-8-2 22:41 编辑

回复 3# 17800455
不好意思哦这几天工作比较忙没怎么来弄这个
首先感谢北极的雨好心来帮我解答    谢谢哦
然后我刚刚又仔细执行了下   在第一次赋值时执行到premenu=datatable.RawValue("Parameter1","Action1")之前的时候   premenu还是空的   执行完以后premenu的值成了菜单3耶不知道这是为什么哦而且第二次执行这个语句的时候premenu又等于mainmenu 了datatable.SetNextRow语句获取的是哪个下一行的值呀   不懂啊    不知道北极的雨可不可以解释下这二句语句具体是怎么执行的噢   谢谢哦
下面有我的具体调试图
      

fengxinzi0151 发表于 2011-8-3 15:26:05

执行mainmenu=datatable.RawValue("Parameter1","Global")         
submenu=datatable.RawValue("Parameter2","Global")         这两句脚本时,数据表都是在第一行,然后用了datatable.SetPrevRow将上一行设置为当前行,刚执行时上一行是不存在的,默认值为空白,执行结束时会重新读取的,从空白行的前一行读取,不知道有没有错解释

liang599176117 发表于 2011-8-3 22:13:10

回复 6# fengxinzi0151
在premenu=datatable.RawValue("Parameter1","Action1")之前premenu是为空的这我还能理解,毕竟还没赋值吗 可是为什么执行完赋值语句以后premenu是等于“菜单3”的哦难道datatable.SetNextRow获取上一行的值时默认为第一行的前一行就是表的最后一行   所以赋值成了菜单3了   不知道可不可以这样理解哦请各位朋友给点意见吧谢谢了

liang599176117 发表于 2011-8-3 22:37:09

终于明白了我刚刚验证了一下   确实datatable.SetNextRow获取前一行时如果当前是第一行 那么获取前一行时是获取的数据表中的最后一行   好像数据表在QTP中是个循环的一样的   感谢6#给我的启示啊:handshake
页: [1]
查看完整版本: 求助啊