global 和 local 的区别

上一篇 / 下一篇  2011-01-05 16:14:47 / 个人分类:QTP学习

最近在做循环时,有点教头烂额,后来经别人指导,才明白global和local表是不一样的,惭愧,基础知识太差了,从网上查了下资料,感觉不错,复制如下: 

      global 是全局的!有几行数据程序就要回放几次!不能重新设置!!

        local 是局部的!有几行数据action 就要回访几次!

        设置action的循环类型:点击keyword view下的需要操作的action,右键-->action call property,即可进行选择.

        下面有几种情况:

        1.当global 有不止一行的数据,action call property->Run On all Rows

        程序每次运行时,action中的每行都要执行

        2.当global 有不止一行的数据,action call property->Run  one iteration only

        而且global的行数>action的行数,当action执行到最后一行后,不管此时global 的行数为几,下次回放时action都执行最后一行!

        如果global的行数<action的行数,action就执行不到最后一行

另, 设置global中的循环类型,需要在filed--> setting-->run里面设置。


今天写了输入错误的电话号码,拨号时,检测提示内容的正确与否的脚本,拨号按钮有三处,所以把检测方法写成函数,方便分别调用。具体实现方法如下:

Function check

    If Dialog("Lemon").Dialog("Lemon").Static("呼叫失败!" ).GetROProperty("text")=DataTable("提示框内容", dtGlobalSheet) Then

  Reporter.ReportEvent micPass,"拨号弹出提示框测试成功","预期结果,与结果一致;实际结果,与结果一致。"

       else

       Reporter.ReportEvent micFail,"拨号弹出提示框测试失败","预期结果,与结果一致;实际结果,与结果不一致。"

   End If

   Dialog("Lemon").Dialog("Lemon").WinButton("确定").Click

End Function

rowcount=datatable.GetSheet(dtGlobalSheet).GetRowCount

For i=1 to rowcount

datatable.GetSheet(dtGlobalSheet).SetCurrentRow(i)

    Dialog("Lemon").WinEdit("Edit").Set DataTable("号码输入", dtGlobalSheet)

    Dialog("Lemon").WinButton("Dial").Click

    Check

    Dialog("Lemon").WinButton("offhook").Click

    Check

    Dialog("Lemon").WinButton("VideoDial").Click

    Check

    Dialog("Lemon").WinEdit("Edit").Set "" 

Next

刚开始的脚本无for语句,数据也放在global表中,在运行时,每执行一条datatable例的数据,就把整个脚本全部重复运行一次,即4个数据,就执行4遍脚本;
后加入for语句,由于当时不清楚global和loacal表的关系,所以设置循环类型只循环一次时,是在keyword中的action处设置,设置完毕,运行时,仍然每条数据都执行全部脚本一次,然后没执行一次脚本就通过for再调用一遍所有语句,即数据总共被执行4*4次;
最后,在filed-->setting处修改了循环类型,解决问题。脚本只执行一次,调用数据时,只循环检测部分。

 


TAG:

 

评分:0

我来说两句

Open Toolbar