QTP中脚本编写函数
怎么在QTP里编写一个函数,这个函数的功能,主要是把所有弹出窗口的提示信息集合在一起。比如,当输入银行账号不是数字时,可以直接去调用这个函数里面的提示信息,再传递到脚本中。当输入税号不是数字时,也可以通过调用这个函数里面另外的提示信息,再传递到脚本中。 。。。发现LZ总喜欢对一个问题多次开新帖提问,再之前的帖子上继续讨论不好么?你所需要的函数,我们已经给你建议了方法了,使用Select Case,你不会是希望我直接帮你写完整个代码吧。 呵呵 我也发现都是阁下回我的贴,十分感谢!给个提示和方法就可以了。。 你是想检查提示信息是否正确是么?其实没什么必要写个函数。在需要获得提示信息的地方做个判断就行了。
要写函数就要先明确好传递什么参数进去,在我看来,传递一个种类和一个信息内容即可,种类用来区分具体的提示信息,比如种类为银行帐号或税号,然后把获取到的提示信息传递到函数里。函数内部用select case判断种类,根据不同的种类确定正确的提示信息,然后去把传递进来的提示信息和正确的提示信息做比对,最后返回结果即可。
不知道是否是你想要的 我要写的这个函数,主要还是要获得提示信息,因为每个项目都有它们的提示信息,但是只是提示信息的内容不同,所在的窗口都是同一个类,所以就是要通过在每输入一个数据项,就调用这个函数,去获取函数里面该项目的提示信息。至于你说的,给函数设置两个参数,一个就是种类,也就是如银行账号或者税号之类的,第二个就是返回的结果,不过,我是第一次写函数,对基本语法还是知道一点,就是刚开始在用的时候,如何返回值不知道要如何展开,还望指教! 我不明白你把提示信息传入到脚本中然后干什么呢,一般不就是把提示信息打印出来或者写到日志文件中吗 我要获得的提示信息,主要还是和系统的提示信息进行判断,并在datatable里设置一个列表示是否通过,如果测试结果和期望结果一致,即提示信息一样的话,就给这个列pass,否则failed。这个是我获取提示信息的目的。但是因为表格中数据列比较多,提示信息有的是类似的,所以就通过建立函数,把所有的提示信息都集中在一个函数里面。再通过每次插入一条记录,去调用这个函数,来获取提示信息并进行判断。 给你各函数吧,是用描述性编程写的,先是获得窗口的所有的类型为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:接收子对象数组的变量,返回值是满足条件的子对象的个数 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是弹出对话框对象,使用描述性编程编写
回复 8# 的帖子
谢谢楼上的哥们,不过我现在还没有开始学描述性编程啊?这个要先研究一下。。。函数我是写好了,只是不知道返回值要怎么写?因为我要设置的弹出窗口信息已经可以给它值了。
回复 9# 的帖子
十分感谢你的帖子,不过在下还没有开始学习描述性编程,需要后面好好的研究。。。只是希望普通一点的方法。。。 原帖由 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
函数结束
程序里你可以直接去调用函数。根据返回值的正确与否去做下一步处理。 鼓励下SHOTSTAR:) 很热心的一位网友
回复 13# 的帖子
嘿嘿,谢谢斑竹。 非常感谢shotstar先生的帮助!
页:
[1]