51Testing软件测试论坛

标题: 如何优化qtp代码? [打印本页]

作者: 森林一木    时间: 2008-2-28 10: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) '第一次获取验证信息
If  outputvalue <>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)  '第二次获取验证信息
If  outputvalue <>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)   '第三次获取验证信息
If  outputvalue <>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
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次获取验证信息
If  outputvalue <>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
标题: 回复 2# 的帖子
对头

把共用的部分提取出来
作者: 森林一木    时间: 2008-2-28 13:06
哈哈,搞定了。多谢楼上的,还是这里哥们够意思!

结贴。

[ 本帖最后由 森林一木 于 2008-2-28 13:25 编辑 ]
作者: pangge369    时间: 2008-2-28 17:56
楼主应该用一个循环,二楼的兄弟已给出!学习了!
作者: pangge369    时间: 2008-2-28 17:58
还要问一下二楼的兄弟:这个循环中的:
Browser("请输入用户名和密码").Page("请输入用户名和密码").Output CheckPoint("请输入用户名和密码")
是否有可能引起检查点不能通过的问题?
作者: piaolingyan    时间: 2010-4-7 14:48
标题: 回复 2# 的帖子
求救啊,我写的脚本跟二楼的大侠是一样的,可是运行的时候第一次到for语句后就停了,后面再run就继续,运行到【reporter.ReportEvent 1,"用户名验证","用户名正确性未进行验证,期望值为:"+istatus+",实际提示信息为:"+outputvalue】,到这边停止了提示“对象不支持此属性或方法: 'reporter.ReportEvent1'”,跳过后,还是不会自动读取表中的下一行数据。。。。请帮忙指导下啥问题?
作者: liujinkui    时间: 2010-4-7 16:44
with
作者: yujie6832    时间: 2010-4-7 17:35
多用WITH,你会发现你会上瘾,优化+美观+直观+好习惯!
作者: TIB    时间: 2010-4-7 21:39
用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次获取验证信息
        If  outputvalue <>istatus Then '检查期望验证信息与实际信息是否一致,如不一致则报告错误
                reporter.ReportEvent 1,"用户名验证","用户名正确性未进行验证,期望值为:"+istatus+",实际提示信息为:"+outputvalue
        End If
        datatable.GetSheet("Action1").setnextrow '取下一行数据
Next




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2