森林一木 发表于 2008-2-28 10:19:19

如何优化qtp代码?

写了一段用户登录的qtp测试代码,感觉代码很长,希望大家帮忙优化一下。
'-------------------脚本说明---------------
'产品版本: 用户管理
'测试员:
'编写日期:2008-2-27
'测试功能:用户登录
'--------------------脚本内容-------------
Dim inputcode '定义一个输入框,输入验证码
Dim outputvalue '定义一个参数,读取文本输出值
Dim istatus '定义一个验证信息值,存放预期校验信息
Browser("请输入用户名和密码").Page("请输入用户名和密码").WebEdit("UserName").Set DataTable("username", dtLocalSheet)
Browser("请输入用户名和密码").Page("请输入用户名和密码").WebEdit("UserPwd").SetSecure DataTable("password", dtLocalSheet)
inputcode=inputbox("请输入验证码!") '弹出输入框,要求输入验证码
Browser("请输入用户名和密码").Page("请输入用户名和密码").WebEdit("confirm").Set inputcode
Browser("请输入用户名和密码").Page("请输入用户名和密码").WebButton("提交").Click
Browser("请输入用户名和密码").Page("请输入用户名和密码").Output CheckPoint("请输入用户名和密码")
outputvalue=DataTable("outmsg",dtlocalsheet) '第一次获取输出值
istatus=datatable("status",dtlocalsheet) '第一次获取验证信息
Ifoutputvalue <>istatus Then '检查期望验证信息与实际信息是否一致,如不一致则报告错误
        reporter.ReportEvent 1,"用户名验证","用户名正确性未进行验证,期望值为:"+istatus+",实际提示信息为:"+outputvalue
        datatable.GetSheet("Action1").setnextrow
        Browser("请输入用户名和密码").Page("请输入用户名和密码").WebEdit("UserName").Set DataTable("username", dtLocalSheet)
        Browser("请输入用户名和密码").Page("请输入用户名和密码").WebEdit("UserPwd").SetSecure DataTable("password", dtLocalSheet)
        inputcode=inputbox("请输入验证码!")
        Browser("请输入用户名和密码").Page("请输入用户名和密码").WebEdit("confirm").Set inputcode
        Browser("请输入用户名和密码").Page("请输入用户名和密码").WebButton("提交").Click
        Browser("请输入用户名和密码").Page("请输入用户名和密码").Output CheckPoint("请输入用户名和密码")
else
        datatable.GetSheet("Action1").setnextrow
        Browser("请输入用户名和密码").Page("请输入用户名和密码").WebEdit("UserName").Set DataTable("username", dtLocalSheet)
        Browser("请输入用户名和密码").Page("请输入用户名和密码").WebEdit("UserPwd").SetSecure DataTable("password", dtLocalSheet)
        inputcode=inputbox("请输入验证码!")
        Browser("请输入用户名和密码").Page("请输入用户名和密码").WebEdit("confirm").Set inputcode
        Browser("请输入用户名和密码").Page("请输入用户名和密码").WebButton("提交").Click
        Browser("请输入用户名和密码").Page("请输入用户名和密码").Output CheckPoint("请输入用户名和密码")
End If
outputvalue=DataTable("outmsg",dtlocalsheet) '第二次获取输出值
istatus=datatable("status",dtlocalsheet)'第二次获取验证信息
Ifoutputvalue <>istatus Then'检查期望验证信息与实际信息是否一致,如不一致则报告错误
        reporter.ReportEvent 1,"密码验证","密码正确性未进行验证,期望值为:"+istatus+",实际提示信息为:"+outputvalue
        datatable.GetSheet("Action1").setnextrow
        Browser("请输入用户名和密码").Page("请输入用户名和密码").WebEdit("UserName").Set DataTable("username", dtLocalSheet)
        Browser("请输入用户名和密码").Page("请输入用户名和密码").WebEdit("UserPwd").SetSecure DataTable("password", dtLocalSheet)
        inputcode=inputbox("请输入验证码!")
        Browser("请输入用户名和密码").Page("请输入用户名和密码").WebEdit("confirm").Set inputcode
        Browser("请输入用户名和密码").Page("请输入用户名和密码").WebButton("提交").Click
        Browser("请输入用户名和密码").Page("请输入用户名和密码").Output CheckPoint("请输入用户名和密码")
else
        datatable.GetSheet("Action1").setnextrow
        Browser("请输入用户名和密码").Page("请输入用户名和密码").WebEdit("UserName").Set DataTable("username", dtLocalSheet)
        Browser("请输入用户名和密码").Page("请输入用户名和密码").WebEdit("UserPwd").SetSecure DataTable("password", dtLocalSheet)
        inputcode=inputbox("请输入验证码!")
        Browser("请输入用户名和密码").Page("请输入用户名和密码").WebEdit("confirm").Set inputcode
        Browser("请输入用户名和密码").Page("请输入用户名和密码").WebButton("提交").Click
        Browser("请输入用户名和密码").Page("请输入用户名和密码").Output CheckPoint("请输入用户名和密码")
End If
outputvalue=DataTable("outmsg",dtlocalsheet)   '第三次获取输出值
istatus=datatable("status",dtlocalsheet)   '第三次获取验证信息
Ifoutputvalue <>istatus Then'检查期望验证信息与实际信息是否一致,如不一致则报告错误
        reporter.ReportEvent 1,"验证码验证","验证码正确性未进行验证,期望值为:"+istatus+",实际提示信息为:"+outputvalue
        datatable.GetSheet("Action1").setnextrow
        Browser("请输入用户名和密码").Page("请输入用户名和密码").WebEdit("UserName").Set DataTable("username", dtLocalSheet)
        Browser("请输入用户名和密码").Page("请输入用户名和密码").WebEdit("UserPwd").SetSecure DataTable("password", dtLocalSheet)
        inputcode=inputbox("请输入验证码!")
        Browser("请输入用户名和密码").Page("请输入用户名和密码").WebEdit("confirm").Set inputcode
        Browser("请输入用户名和密码").Page("请输入用户名和密码").WebButton("提交").Click
        Browser("请输入用户名和密码").Page("请输入用户名和密码").Output CheckPoint("请输入用户名和密码")
else
        datatable.GetSheet("Action1").setnextrow
        Browser("请输入用户名和密码").Page("请输入用户名和密码").WebEdit("UserName").Set DataTable("username", dtLocalSheet)
        Browser("请输入用户名和密码").Page("请输入用户名和密码").WebEdit("UserPwd").SetSecure DataTable("password", dtLocalSheet)
        inputcode=inputbox("请输入验证码!")
        Browser("请输入用户名和密码").Page("请输入用户名和密码").WebEdit("confirm").Set inputcode
        Browser("请输入用户名和密码").Page("请输入用户名和密码").WebButton("提交").Click
        Browser("请输入用户名和密码").Page("请输入用户名和密码").Output CheckPoint("请输入用户名和密码")
End If

'进入系统后退出
Browser("请输入用户名和密码").Page("用户管理及用户登录系统").Link("退出登录").Click
Browser("请输入用户名和密码").Page("请输入用户名和密码").Sync

[ 本帖最后由 森林一木 于 2008-2-28 13:23 编辑 ]

hsjzfling 发表于 2008-2-28 11:29:00

Dim inputcode '定义一个输入框,输入验证码
Dim outputvalue '定义一个参数,读取文本输出值
Dim istatus '定义一个验证信息值,存放预期校验信息
For i=1 To DataTable.GetSheet(dtLocalSheet).GetRowCount
Browser("请输入用户名和密码").Page("请输入用户名和密码").WebEdit("UserName").Set DataTable("username", dtLocalSheet)
Browser("请输入用户名和密码").Page("请输入用户名和密码").WebEdit("UserPwd").SetSecure DataTable("password", dtLocalSheet)
inputcode=inputbox("请输入验证码!") '弹出输入框,要求输入验证码
Browser("请输入用户名和密码").Page("请输入用户名和密码").WebEdit("confirm").Set inputcode
Browser("请输入用户名和密码").Page("请输入用户名和密码").WebButton("提交").Click
Browser("请输入用户名和密码").Page("请输入用户名和密码").Output CheckPoint("请输入用户名和密码")
outputvalue=DataTable("outmsg",dtlocalsheet) '第i次获取输出值
istatus=datatable("status",dtlocalsheet) '第i次获取验证信息
Ifoutputvalue <>istatus Then '检查期望验证信息与实际信息是否一致,如不一致则报告错误
reporter.ReportEvent 1,"用户名验证","用户名正确性未进行验证,期望值为:"+istatus+",实际提示信息为:"+outputvalue
End If
datatable.GetSheet("Action1").setnextrow '取下一行数据
Next

[ 本帖最后由 hsjzfling 于 2008-2-28 11:31 编辑 ]

higkoo 发表于 2008-2-28 11:35:23

回复 2# 的帖子

对头

把共用的部分提取出来

森林一木 发表于 2008-2-28 13:06:26

哈哈,搞定了。多谢楼上的,还是这里哥们够意思!

结贴。

[ 本帖最后由 森林一木 于 2008-2-28 13:25 编辑 ]

pangge369 发表于 2008-2-28 17:56:41

楼主应该用一个循环,二楼的兄弟已给出!学习了!

pangge369 发表于 2008-2-28 17:58:02

还要问一下二楼的兄弟:这个循环中的:
Browser("请输入用户名和密码").Page("请输入用户名和密码").Output CheckPoint("请输入用户名和密码")
是否有可能引起检查点不能通过的问题?

piaolingyan 发表于 2010-4-7 14:48:11

回复 2# 的帖子

:handshake 求救啊,我写的脚本跟二楼的大侠是一样的,可是运行的时候第一次到for语句后就停了,后面再run就继续,运行到【reporter.ReportEvent 1,"用户名验证","用户名正确性未进行验证,期望值为:"+istatus+",实际提示信息为:"+outputvalue】,到这边停止了提示“对象不支持此属性或方法: 'reporter.ReportEvent1'”,跳过后,还是不会自动读取表中的下一行数据。。。。请帮忙指导下啥问题?

liujinkui 发表于 2010-4-7 16:44:07

with

yujie6832 发表于 2010-4-7 17:35:11

多用WITH,你会发现你会上瘾,优化+美观+直观+好习惯!

TIB 发表于 2010-4-7 21:39:48

用With,或者用Set提取父对象:

Dim inputcode '定义一个输入框,输入验证码
Dim outputvalue '定义一个参数,读取文本输出值
Dim istatus '定义一个验证信息值,存放预期校验信息

Set objPage = Browser("请输入用户名和密码").Page("请输入用户名和密码")
For i=1 To DataTable.GetSheet(dtLocalSheet).GetRowCount
        objPage.WebEdit("UserName").Set DataTable("username", dtLocalSheet)
        objPage.WebEdit("UserPwd").SetSecure DataTable("password", dtLocalSheet)
        inputcode=inputbox("请输入验证码!") '弹出输入框,要求输入验证码
        objPage.WebEdit("confirm").Set inputcode
        objPage.WebButton("提交").Click
        objPage.Output CheckPoint("请输入用户名和密码")
        outputvalue=DataTable("outmsg",dtlocalsheet) '第i次获取输出值
        istatus=datatable("status",dtlocalsheet) '第i次获取验证信息
        Ifoutputvalue <>istatus Then '检查期望验证信息与实际信息是否一致,如不一致则报告错误
                reporter.ReportEvent 1,"用户名验证","用户名正确性未进行验证,期望值为:"+istatus+",实际提示信息为:"+outputvalue
        End If
        datatable.GetSheet("Action1").setnextrow '取下一行数据
Next
页: [1]
查看完整版本: 如何优化qtp代码?