QTP 测试登陆
QTP 测试登陆时的问题:我测试登陆时,用户名和密码用了参数化进行设置,当输入正确的用户名好密码时,能够通过测试,
当输入错误的用户名或密码时 QTP就停下来不动了, 怎么能够把正确的测试结果和错误的测试结果都一
次性跑一片啊并显示到报表中啊?
谢谢了!
输入错误的用户名和密码点击确定时 确定按钮旁边的 DIV 显示 “用户名或密码错误”
我的代码入下:
Browser("视频监控系统IE副控").Page("视频监控系统IE副控").WebEdit("txtid").Set DataTable("user_Name", dtGlobalSheet)
Browser("视频监控系统IE副控").Page("视频监控系统IE副控").WebEdit("txtpassword").SetSecure DataTable("Password", dtGlobalSheet)
'得到登陆的用户名称和密码 此方法是为每次循环登陆时进行测试
LoginName = Browser("视频监控系统IE副控").Page("视频监控系统IE副控").WebEdit("txtid").Object.value
LoginPwd = Browser("视频监控系统IE副控").Page("视频监控系统IE副控").WebEdit("txtpassword").Object.value
'显示报告错误
'Reporter.ReportEvent micPass, "登陆的用户名好密码为" ,"用户名为 "+LoginName+" 密码为 :"+LoginPwd+""
'Reporter.ReportEvent micpass, "登陆成功", "用户名与密码正确"
Browser("视频监控系统IE副控").Page("视频监控系统IE副控").WebButton("确定").Click
'得到登陆的结果
Browser("视频监控系统IE副控").Page("视频监控系统IE副控").WebEdit("txtpassword").SetSecure "48741b0a6bdf"
IfNOT href ="http://10.0.0.196/main/user/logo.asp" Then
Reporter.ReportEventmicFail, "登陆失败" ,"用户名为 "+LoginName+" 密码为 :"+LoginPwd+""
ExitAction
Else
Reporter.ReportEventmicPass, "登陆成功" ,"用户名为 :"+LoginName
ExitAction
End If
我知道是 条件判断出错了(就是加粗的地方),但不知道怎么写
[ 本帖最后由 tangxudim 于 2008-7-9 13:03 编辑 ] 密码错误跟密码正确的流程都不一致D,录制的脚本也一样! 这个要用到场景恢复?
[ 本帖最后由 qq102568183 于 2008-7-8 23:24 编辑 ] 这应该是测试设计的问题,对于错误的帐号,测试结果应该预期为登录失败,这时候应该检查程序是否弹出相应的对话框或其他提示信息,如果正确提示,则Pass,否则Fail。
建议这种情况下最好不要用Recovery Scenario。Recovery Scenarios的设计目的是用于处理那些不可预见的事件:
http://blog.csdn.net/Testing_is_believing/archive/2008/03/17/2193021.aspx
推荐新书《QTP自动化测试实践》:victory: 推荐新书《QTP自动化测试实践》?!!!!
速度好快 刚刚搜了一下,当当网上没有:L
再去china-pub上看看 操作步骤:
1,确定正确密码与错误密码的区别。例如错误的密码就有提示,一个msgbox的存在或者是其它,正确的,就会跳出什么页面之类的。
2,添加或者描述某个这个错误提示的对象。
3,代码可以这样2中方式实现
a,如果我们只判断正确的,哪么其他的就都是不通过的(姑且这么认为吧)
if(通过后,某个对象出现,例如页面跳转,程序对象出现)object.exist then
Reporter.ReportEvent micpass, "登陆成功", "用户名与密码正确"
else
Reporter.ReportEvent micfail, "登陆失败", "用户名与密码错误"
end if
b,我们现在写的是捕获错误的。如果我们想更详细的,哪么我们就可以先得到提示框的内容text,然后通过真正表达式去判断某个字段存在去区分,例如我们在对话框中,得到的文字是“密码”或者是“用户名”
if(失败后,某个对象出现,例如页面跳转,程序对象出现)object.exist then
捕获对话框内容,返回一个str,然后通过使用正则表达式,提取它的内容得到“a”
else
Reporter.ReportEvent micpass, "登陆成功", "用户名与密码正确"
end if
select case a
case "密码"
Reporter.ReportEvent micfail, "登陆失败", "密码错误"
case "用户名"
Reporter.ReportEvent micfail, "登陆失败", "用户名错误"
.....
......
end select :) 但一般情况呢,我们使用QTP是在后期工程提交前做的验证,所以不会涉及到很复杂的东西。都是实现设计好,那个是用户名正确那个是错的,或者密码错误的。
因此,我们不用写得哪么详细,只要有对话框或者其他出现,就说明什么情况了。
回复 7# 的帖子
你能不能, 写一个个完整程序出来,我用你方法, 出错很多, 也很难排查, 能不能写一下。 我这里不会说那么多大道理,你的问题也同样好解决.1.把登录成功和不成功的操作步骤都录到一个脚本中,分别用function括起来.
2.在登录时做判断,正确就call刚才写好的正确的function,并出一个成功的report.错误同样.
这样就解决你的问题啦!
这是我自己的方法,大家有意见就提啦! 为了你们可以更好理解我说的东东,给代码如下:
Dim username
username = datatable.Value("user_name","Global")
If(username <> "") Then
Call Login_Success()
else
Call Login_Error()
End If
Function Login_Success()
Browser("软酷.人力资源引擎").Page("软酷.人力资源引擎").WebEdit("userName").Set DataTable("user_name", dtGlobalSheet)
Browser("软酷.人力资源引擎").Page("软酷.人力资源引擎").WebEdit("password").SetSecure DataTable("pass_word", dtGlobalSheet)
Browser("软酷.人力资源引擎").Page("软酷.人力资源引擎").Image("index_denlu001").Click 42,2
Browser("软酷.人力资源引擎").Page("我的软酷 - 软酷.人力资源引擎_2").Check CheckPoint("我的软酷 - 软酷.人力资源引擎")
Browser("软酷.人力资源引擎").Page("我的软酷 - 软酷.人力资源引擎").Link("测评服务").Click
End Function
Function Login_Error()
Browser("软酷.人力资源引擎").Page("软酷.人力资源引擎").Image("index_denlu001").Click 52,12
Browser("软酷.人力资源引擎").Page("用户登录/注册 - 软酷.人力资源引擎_2").Image("tydh_05").Click
End Function
回复 11# 的帖子
你好@ 你的 中段代码当运行到是错误的用户名好密码 页面显示了错误信息就不会进行下i次循环了啊 ! 能够有其他办法吗? 我新手真的有些不懂?先谢谢啦回复 7# 的帖子
你好! 能够告诉我 得到登陆结果的代码不啊! 我的IF条件中的语句不是很会!新手,先谢谢了 错误的时候就应该弹出提示信息,而正确的情况就会发生页面跳转。1、当错误时,捕获这个提示信息,判断其是否正确。
无论正确与否,都让它点提示信息框上的【确定】按钮 保证其把整个DataTable中的数据遍历一遍。
2、正确时,无非就是看其是否跳转到正确页面。
(1)、如果有【系统签退】、【返回】之类的Link看看是否好用。
(2)、或者就是验证后续操作是否可行,也就是点击页面上的一个Link进入下个页面。
3、你也可以加入截图机制,将正确后跳转的页面截下来,然后你看看是否正确。 File -> setting ->Run-> when error occurs during run session = proceed to next step 就可以了,就算是脚本有错误也会继续下一步,直到你的循环结果执行完毕。
如果要输出结果,就需要根据上面的一些方法做判断
回复关于登录测试
Browser("视频监控系统IE副控").Page("视频监控系统IE副控").WebEdit("txtid").Set DataTable("user_Name", dtGlobalSheet)Browser("视频监控系统IE副控").Page("视频监控系统IE副控").WebEdit("txtpassword").SetSecure DataTable("Password", dtGlobalSheet)
Browser("视频监控系统IE副控").Page("视频监控系统IE副控").WebButton("确定").Click
IfBrowser("视频监控系统IE副控").Dialog("Microsoft Internet Explorer").ExistThen
Browser("视频监控系统IE副控").Dialog("Microsoft Internet Explorer").Static("Please input your User Name.").Check CheckPoint("Please input your User Name.")'对没有输入或者输入错误的用户名和密码弹出提示窗口进行判断
Browser("视频监控系统IE副控").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
Else'如果没有弹出用户名或者密码错误提示窗口,则表示登录成功
Reporter.ReportEvent micPass,"登录成功","已经登录成功"
End If
以上方法是按自己测试环境后进行改写,不能照抄,如果有缺少或者不同的部分需要自己作调整,另外此方法还没有完全完善,本来想直接在数据库中取登录名和密码与录入的登录名和密码对比,但因为数据库中密码被加密,所以不能用这个方法,只能用弹出窗口的方法判断是否登录成功了
页:
[1]