yunbin_7 发表于 2010-3-31 10:59:17

QTP中脚本编写函数

怎么在QTP里编写一个函数,这个函数的功能,主要是把所有弹出窗口的提示信息集合在一起。比如,当输入银行账号不是数字时,可以直接去调用这个函数里面的提示信息,再传递到脚本中。当输入税号不是数字时,也可以通过调用这个函数里面另外的提示信息,再传递到脚本中。

shotstar 发表于 2010-3-31 11:10:44

。。。发现LZ总喜欢对一个问题多次开新帖提问,再之前的帖子上继续讨论不好么?
你所需要的函数,我们已经给你建议了方法了,使用Select Case,你不会是希望我直接帮你写完整个代码吧。

yunbin_7 发表于 2010-3-31 11:17:27

呵呵 我也发现都是阁下回我的贴,十分感谢!给个提示和方法就可以了。。

shotstar 发表于 2010-3-31 11:30:12

你是想检查提示信息是否正确是么?其实没什么必要写个函数。在需要获得提示信息的地方做个判断就行了。
要写函数就要先明确好传递什么参数进去,在我看来,传递一个种类和一个信息内容即可,种类用来区分具体的提示信息,比如种类为银行帐号或税号,然后把获取到的提示信息传递到函数里。函数内部用select case判断种类,根据不同的种类确定正确的提示信息,然后去把传递进来的提示信息和正确的提示信息做比对,最后返回结果即可。
不知道是否是你想要的

yunbin_7 发表于 2010-3-31 11:37:04

我要写的这个函数,主要还是要获得提示信息,因为每个项目都有它们的提示信息,但是只是提示信息的内容不同,所在的窗口都是同一个类,所以就是要通过在每输入一个数据项,就调用这个函数,去获取函数里面该项目的提示信息。至于你说的,给函数设置两个参数,一个就是种类,也就是如银行账号或者税号之类的,第二个就是返回的结果,不过,我是第一次写函数,对基本语法还是知道一点,就是刚开始在用的时候,如何返回值不知道要如何展开,还望指教!

haiwa957 发表于 2010-3-31 11:39:55

我不明白你把提示信息传入到脚本中然后干什么呢,一般不就是把提示信息打印出来或者写到日志文件中吗

yunbin_7 发表于 2010-3-31 11:43:16

我要获得的提示信息,主要还是和系统的提示信息进行判断,并在datatable里设置一个列表示是否通过,如果测试结果和期望结果一致,即提示信息一样的话,就给这个列pass,否则failed。这个是我获取提示信息的目的。但是因为表格中数据列比较多,提示信息有的是类似的,所以就通过建立函数,把所有的提示信息都集中在一个函数里面。再通过每次插入一条记录,去调用这个函数,来获取提示信息并进行判断。

haiwa957 发表于 2010-3-31 11:44:28

给你各函数吧,是用描述性编程写的,先是获得窗口的所有的类型为Dialog的子对象
Publicfunction GetChildObject(window, childType, childObjArray)
                        Dim childObj
                        Set childObj= Description.Create()
                        childObj("Class Name").Value = childType
                        Set childObjArray = window.ChildObjects(childObj)
                        GetChildObject = childObjArray.count
                        Set childObj = nothing
End Function       
其中的window:指窗口,需要用描述性编程写,childType:子对象的类型,像你说的这个就是“JavaDialog”或者“Dialog”之类的字符串,childObjArray:接收子对象数组的变量,返回值是满足条件的子对象的个数

haiwa957 发表于 2010-3-31 11:48:33

Public Function HandleNoticeDialog(dialog)
                If Not dialog.Exist(5) Then
                        Call WriteLog(4, "指定对话框不存在,退出函数HandleNoticeDialog!")
                        Exit Function
                End If
                Dim childType, childObjArray, childCount
                childType = "JavaTable"
                childCount = GetChildObject(dialog, childType, childObjArray)
                If childCount>0 Then
                        Dim table, row, col,i, j, tempstr
                        Set table = childObjArray(0)
                        Call CreateTableHandle(table)
                        For i = 0 to table.GetROProperty("rows")-1
                                tempstr = ""
                                For j = 0 to table.GetROProperty("cols")-1
                                                 tempstr = tempstr & table.GetCellData(i,j)& " "
                                Next
                                Call WriteLog(3,tempstr)
                        Next
                        Set table = nothing
                End If
                childType = "JavaEdit"
                childCount = GetChildObject(dialog, childType, childObjArray)
                If childCount>0 Then
                     For i = 0 to childCount-1
                        Call WriteLog(3,childObjArray(i).GetROProperty("value"))
                     Next
                End If
                                          dialog.close
End Function
这个函数是处理弹出的提示对话框的,dialog是弹出对话框对象,使用描述性编程编写

yunbin_7 发表于 2010-3-31 11:52:22

回复 8# 的帖子

谢谢楼上的哥们,不过我现在还没有开始学描述性编程啊?这个要先研究一下。。。
函数我是写好了,只是不知道返回值要怎么写?因为我要设置的弹出窗口信息已经可以给它值了。

yunbin_7 发表于 2010-3-31 11:54:16

回复 9# 的帖子

十分感谢你的帖子,不过在下还没有开始学习描述性编程,需要后面好好的研究。。。只是希望普通一点的方法。。。

shotstar 发表于 2010-3-31 12:09:46

原帖由 yunbin_7 于 2010-3-31 11:43 发表 http://bbs.51testing.com/images/common/back.gif
我要获得的提示信息,主要还是和系统的提示信息进行判断,并在datatable里设置一个列表示是否通过,如果测试结果和期望结果一致,即提示信息一样的话,就给这个列pass,否则failed。这个是我获取提示信息的目的。但是 ...
那就按我上面的回复考虑你的函数吧,返回值其实只要返回个True False就可以了。如果你想返回更多的信息就比较麻烦了,我不太清楚是否能返回多个值。
写返回值的例子
Function text(a,b)
text=a & b
End Function
str=test("sss","ddd")
函数内部还是用select case去处理,然后判断是否与期望的信息相符合,返回结果。然后你根据返回值再去进一步处理。给你写个伪代码吧

函数Test(MSGtype,getMSG)'MSGtype是种类,getMSG是从页面获取到的信息
Select case 'MSGtype
判断不同种类的正确提示信息是什么
correctMSG=正确的提示信息
然后判断correctMSG是否和getMSG相等
如果不相等,Test=False
如果相等,Test=True
函数结束

程序里你可以直接去调用函数。根据返回值的正确与否去做下一步处理。

yujie6832 发表于 2010-3-31 12:10:16

鼓励下SHOTSTAR:) 很热心的一位网友

shotstar 发表于 2010-3-31 12:11:33

回复 13# 的帖子

嘿嘿,谢谢斑竹。

yunbin_7 发表于 2010-3-31 13:32:09

非常感谢shotstar先生的帮助!
页: [1]
查看完整版本: QTP中脚本编写函数