QTP中为了提高扩展性,提供了一个为测试对象添加一个新的自定义方法,或者重写测试对象已有的方法的函数RegisterUserFunc,在此给大家分享一下。
RegisterUserFunc:为测试对象添加一个新的自定义方法,或者重写测试对象已有的方法
语法:
RegisterUserFunc TOClass, MethodName, FunctionName, SetAsDefault
说明:
TOClass 想要注册方法的对象
MethodName 想要注册的方法名称,不能有空格
FunctionName 函数中自定义的函数名称
SetAsDefault 是否要注册为对象的默认操作,值为:False,或者True
语法:
RegisterUserFunc TOClass, MethodName, FunctionName, SetAsDefault
说明:
TOClass 想要注册方法的对象
MethodName 想要注册的方法名称,不能有空格
FunctionName 函数中自定义的函数名称
SetAsDefault 是否要注册为对象的默认操作,值为:False,或者True
------------------------例子1:为webedit添加新方法----------------
需求:
1.为webedit添加一个方法,方法名为"NewMethod1"
2.该方法实现获取webedit的默认值,并将该值写入reporter中
需求:
1.为webedit添加一个方法,方法名为"NewMethod1"
2.该方法实现获取webedit的默认值,并将该值写入reporter中
实现思路:
1.用vbs封装一个方法实现获取webedit的默认值,并将该值写入reporter中
2.利用RegisterUserFunc在qtp运行时环境中注册该函数
1.用vbs封装一个方法实现获取webedit的默认值,并将该值写入reporter中
2.利用RegisterUserFunc在qtp运行时环境中注册该函数
实现步骤:
1.以下代码是用vbs封装一个方法实现获取webedit的默认值,并将该值写入reporter中。
将以下脚本保存为vbs文件,这里保存为test.vbs,保存于d:\
Sub GetDeafaultValue(objWebEdit)
WebEditDeafaultValue = objWebEdit.GetRoProperty("default value")
Reporter.ReportEvent micDone,"获取WebEdit的默认值","默认值为:" & WebEditDeafaultValue
End Sub
1.以下代码是用vbs封装一个方法实现获取webedit的默认值,并将该值写入reporter中。
将以下脚本保存为vbs文件,这里保存为test.vbs,保存于d:\
Sub GetDeafaultValue(objWebEdit)
WebEditDeafaultValue = objWebEdit.GetRoProperty("default value")
Reporter.ReportEvent micDone,"获取WebEdit的默认值","默认值为:" & WebEditDeafaultValue
End Sub
2.加载函数test.vbs到qtp的运行时环境中
加载有动态加载和静态加载,本例采用动态加载方式
在qtp专家试图第一行输入如下代码:
executefile "d:\test.vbs"
加载有动态加载和静态加载,本例采用动态加载方式
在qtp专家试图第一行输入如下代码:
executefile "d:\test.vbs"
3.在qtp运行时环境中注册函数
在qtp专家试图第二行输入如下代码:
RegisterUserFunc "WebEdit","NewMethod1","GetDeafaultValue"
在qtp专家试图第二行输入如下代码:
RegisterUserFunc "WebEdit","NewMethod1","GetDeafaultValue"
4.webedit调用新注册的NewMethod1方法
Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").NewMethod1
Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").NewMethod1
打开百度首页,按照1-4部操作,运行qtp脚本,检查reporter报告中已将webedit的默认值写入报告中
--------------------------例子2:重写wededit的set方法-------------
需求:
1.重写webedit的set方法,并将重写的方法作为默认操作
2.让set方法实现,为wededit赋值前获取webedit的默认值,并将该值写入reporter中
3.赋值后,获取webedit的编辑框的当前值,并将当前值写入reporter中
1.重写webedit的set方法,并将重写的方法作为默认操作
2.让set方法实现,为wededit赋值前获取webedit的默认值,并将该值写入reporter中
3.赋值后,获取webedit的编辑框的当前值,并将当前值写入reporter中
实现思路:
1.用vbs封装一个函数实现需求2、3的功能
2.利用RegisterUserFunc在qtp运行时环境中注册该函数
1.用vbs封装一个函数实现需求2、3的功能
2.利用RegisterUserFunc在qtp运行时环境中注册该函数
实现步骤:
1.以下代码是用vbs封装一个函数实现需求2、3的功能,并将该值写入reporter中。
将以下脚本保存为vbs文件,这里保存为test.vbs,保存于d:\
Sub SetValue(objWebEdit,InputValue)
WebEditDeafaultValue = objWebEdit.GetRoProperty("default value")
Reporter.ReportEvent micDone,"获取WebEdit默认值","默认值为:" & WebEditDeafaultValue
objWebEdit.Set InputValue
WebEditValue = objWebEdit.GetRoProperty("value")
Reporter.ReportEvent micDone,"获取WebEdit输入值","输入值为:" & WebEditValue
End Sub
1.以下代码是用vbs封装一个函数实现需求2、3的功能,并将该值写入reporter中。
将以下脚本保存为vbs文件,这里保存为test.vbs,保存于d:\
Sub SetValue(objWebEdit,InputValue)
WebEditDeafaultValue = objWebEdit.GetRoProperty("default value")
Reporter.ReportEvent micDone,"获取WebEdit默认值","默认值为:" & WebEditDeafaultValue
objWebEdit.Set InputValue
WebEditValue = objWebEdit.GetRoProperty("value")
Reporter.ReportEvent micDone,"获取WebEdit输入值","输入值为:" & WebEditValue
End Sub
2.加载函数test.vbs到qtp的运行时环境中
加载有动态加载和静态加载,此处采用静态加载的方式:
在qtp的file->settings -> resources ->libraryes 中添加步骤1中保存的test.vbs文件
加载有动态加载和静态加载,此处采用静态加载的方式:
在qtp的file->settings -> resources ->libraryes 中添加步骤1中保存的test.vbs文件
3.在qtp运行时环境中注册重写的set方法
在qtp专家试图第一行输入如下代码(注意:第二个参数需要与qtp中被重写的方法同名):
RegisterUserFunc "WebEdit","Set","SetValue",True
在qtp专家试图第一行输入如下代码(注意:第二个参数需要与qtp中被重写的方法同名):
RegisterUserFunc "WebEdit","Set","SetValue",True
4.webedit调用重写后的Set方法
Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").Set "新输入的值"
Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").Set "新输入的值"
打开百度首页,按照1-4部操作,运行qtp脚本,检查reporter报告中已将webedit的默认值和新输入的值写入报告中