Qtp测试中的密码问题
Qtp中,一般录制的脚本进行回放的时候就会遇到各种各样的问题,导致回放不能顺利进行,比如这次我在录制一个简单的登陆脚本的时候,就遇到了这样的问题:
[遇到问题]
1, 录制好的脚本中的密码不能正常输入。
2, 验证码由于每次都会变化怎么输入?
[解决办法]
- 对于第一个问题,大家在网上看看,解决的办法有很多种,大致分为以下几种:
1, 如果你录制好的脚本是这样的:WebEdit("***").SetSecure "加密以后的字符串",这种密码加密方式,如果你想改为明文,很好改正,改为WebEdit("***").Set "明文密码",就可以解决。
2, 如果你的密码控件支持Type方法还可以改为WebEdit("***").Type "明文密码"。
3, 有时你如果没有录制,你怎么知道你的密码在qtp中加密以后的密文是多少?所以想用SetSecure "加密以后的字符串"就有困难了。这里提供一个办法,如果你的密码是mercury,那么你可以直接写代码那么Crypt.Encrypt("mercury") 可以得到一个值 "464d059be45f8d524b913574b017ed492a8b8d4b"这就是你加密以后的密文了。
4, 还有一种可以使用sendkeys方法来进行,sendkeys专门是用来输入不能识别的特殊控件的。
-
对于第二个问题,方法也只有两个:
1, 让开发人员设计一个万能的验证码
2, 跳过验证码的输入
为什么这样建议,因为你想想,验证码的作用是什么,就是为了防止无休止的输入也就是为了防止破解和注水,所以要用什么别的技术去验证验证码的话,还是有点费时。当然也有解决办法,读者可以自己去看看:http://blog.163.com/lj_yyx/blog/static/6593781020098168415022/
[注意事项]
非常不幸,上面的几种方法都没有解决掉我的问题,最后,我在使用了很多种方法还是没有解决掉之后,我去请教了开发人员。然后他们说密码输入是用特殊的控件控制的,不能用自动化测试进行输入,目的也就是为了防止注水和破解,一般如果要进行自动化测试的话,就只能将这段代码注销掉,跳过进行测试。
当然还有很多不同的类型,这里只列举了几个,比如前段时间看到的说农行的登陆是一个每次打开都在变化的数字软件盘,应该怎么处理,这个帖子写的挺好的,可以参考一下:http://www.51testing.com/html/60/n-133560.html
[学习经验]
这个过程中,学会了一些小的技巧或者说有用的方法:
1, spy的使用,也就是说当你不知道你要测试的一个控件是什么?有什么方法可以使用的时候,就可以用spy进行探测,spy就是qtp中的那个小人,这样就可以看到很多种可以选择的方法,挺有用的。
2, sendkeys的使用方法,可以用来处理:
-
模拟字符串的输入,vbs代码:下面的代码的意思就是,输入123456。
Dim WshShell
Set WshShell = CreateObject("WScript.shell")
WshShell.SendKeys"123456"
Set WshShell=nothing
-
特殊字符串的输入,用法和上面一样。
Dim WshShell
Set WshShell = CreateObject("WScript.shell")
WshShell.SendKeys(“^+{Esc}”) ’表示输入Ctrl+Shift+Esc
Set WshShell=nothing
注:Ctrl,Shift,Alt这三个常用的组合键直接使用+,^,%表示。其余可以用{Esc},{Enter}表示。
[感悟]
时间已经是这样度过了很久了,虽然渐渐的明白了接下来的路,但是还是眺望不到尽头,就这样过。
很多事情就像看A片,看得人觉得很爽,做的人未必
TT