51Testing软件测试论坛

标题: 有验证码的登陆系统。录制后播放不了 [打印本页]

作者: unknow-ask    时间: 2005-8-11 09:19
标题: 有验证码的登陆系统。录制后播放不了
当登陆有验证码的WEB页形式的管理系统时,录制了以下过程:先输入错误的密码,登陆不成功后,再输入错误的用户名,登陆也不成功,再输入正确的完整的信息后,登陆成功。
然后把刚才录制的脚本重新播放,就在输入正确完整的信息处播放不了了。怎么解决这个问题呢?
作者: unknow-ask    时间: 2005-8-11 09:25
标题: 再补充一个问题,就是播放时的速度问题。
怎么样控制播放的速度呢?也就是说要是播放的速度太快了,使其慢一点,怎么办呢?我用过DELAYFOR()函数但没什么效果?请指教
作者: ilovejolly    时间: 2005-8-11 09:31
1 第一个问题,不是很清楚楼主的意思,验证码?那种动态的?

2 tool----GUI playback optioin---playback标签下的script control里面,设置命令和按键的间隔时间
作者: unknow-ask    时间: 2005-8-11 16:57
标题: 是动态的验证码
 也就是说每登陆一次验证码就要刷新一次的
作者: ilovejolly    时间: 2005-8-11 21:00
你的验证码那一栏怎么输的?把代码贴出来看下也可以
作者: unknow-ask    时间: 2005-8-12 09:16
标题: 代码如下:
Sub Main
    Dim Result As Integer

    'Initially Recorded: 2005-8-11  9:20:06
    'Script Name: web
   
    Window SetContext, "Caption=Program Manager", ""
    ListView DblClick, "ObjectIndex=1;\;ItemText=Internet Explorer", "Coords=20,17"
   
    Window SetContext, "Caption=about:blank - Microsoft Internet Explorer", ""
    ComboEditBox Click, "ObjectIndex=3", "Coords=91,12"
    InputKeys "http://192"
   
    Window SetContext, "Class=Auto-Suggest Dropdown", "Activate=0"
    ListView Click, "Text=Internet Explorer;\;ItemText=http://192.168.1.16:8080/WebCon", "Coords=111,7"
   
    Window SetContext, "Caption=WebCon管理平台 - Microsoft Internet Explorer", ""
    Browser NewPage,"HTMLTitle=WebCon管理平台",""
    EditBox Click, "Name=username", "Coords=13,15"
    InputKeys "admin{TAB}123456{TAB}5607{ENTER}"(从这以下就不能播放了)
    Browser NewPage,"HTMLTitle=WebCon管理平台",""
    EditBox Click, "Name=username", "Coords=6,14"
    InputKeys "admin{TAB}{TAB}7895{ENTER}"(7895就是验证码,其中密码是空)
    DelayFor (1000)
    Browser NewPage,"HTMLTitle=WebCon管理平台",""
    HTMLLink Click, "HTMLText=退出系统", ""
    Window CloseWin, "", ""

End Sub
作者: gaobugu    时间: 2005-8-12 11:24
对的。我现在也遇到这个问题,就是在登录的时候检证码是动态的,就是网上的论坛一样,旁边是一幅图片,然后在输入框中输入检证码。我测试的这个系统是c/s结构的。所以录制登录后再回放就不能登录了。
作者: ilovejolly    时间: 2005-8-12 12:09
为什么会有动态码这个东西?就是针对自动登陆而来的
当然自己的服务器可能还是有办法的。要么你把这个生成动态码的函数做成公共的,让客户端可以直接访问。这样的话得不偿失,自动化的好处没体现出来
所以建议登陆这一步省略掉
作者: gaobugu    时间: 2005-8-12 13:54
如果只做功能测试还可以,去掉也不影响很大,但是如果要做压力测试的话,不用登录是不是也可以。
作者: ilovejolly    时间: 2005-8-12 14:00
不好意思,验证码确实不好解决。如果可以做成自动登陆的脚本,那某些充值网站就危险了。
如果你想到好的办法,不妨告诉我,在下对这个很有兴趣

[ Last edited by ilovejolly on 2005-8-12 at 14:08 ]
作者: 司空公子    时间: 2005-8-12 17:16
验证码一般都是图片形式的,所以可以先获取验证码的一些属性,比如图片的名称什么的,然后讲图片和相应的验证码数字信息一一对应起来。这样在测试过程中,可以根据图片的信息,输入相应的数字,达到自动登陆的目的。
当然也可以让开发人员把这项功能先关掉,或者提供一个接口,让你能够得到隐藏属性。
总之,就是相尽一切办法搞定它^_^
作者: DontTest    时间: 2005-8-17 16:53
如果Robot能从图片中找出有用的信息,那么验证码的存在还有什么意义???
作者: ilovejolly    时间: 2005-8-17 17:09
仔细考虑一下,比较好的办法还是手动输入
再验证码之前加一个延时就可以了
作者: unknow-ask    时间: 2005-8-18 09:18
你的意思是说,在回放脚本时,把输入验证码的地方让它时间长一点,有人工自己输入验证码?要是这样的话,那录制的输入验证码的脚本不是没用了.要删除了.否则不就出问题了?
不知道我说的对不对?你的意思是不是这样呢?
作者: ilovejolly    时间: 2005-8-18 09:29
我看你的脚本是用tab来切换不同的editbox的,改成这样:

EditBox Click, "Name=username", "Coords=13,15"
InputKeys "admin{TAB}123456"
delayfor 3000
手动输入验证码
InputKeys "admin{ENTER}"

如果要不停重复使用登陆这一步就有点麻烦,不过也只有这样解决了
作者: 司空公子    时间: 2005-8-18 09:33
现在我们是在做测试,要的是通过模拟手工输入的方式来实现登陆过程。那么获得图片的信息,就是为了知道它现在的动态验证码是什么,这样才能够模拟手工输入相应的验证码,实现正确的登陆。
作者: 司空公子    时间: 2005-8-18 09:38
如果要手工输入的话,那还要自动化干嘛。
现在的输入信息是验证码,是一串数字。如果是人工的话,那么获取这串数字的方式就是眼睛看相应的图片。那么对于自动化来讲,它获取的方式就是通过分析相应的图片,得到对应验证码的信息。
作者: ilovejolly    时间: 2005-8-18 09:44
自动化解决不了的地方,用手动操作,不知有什么不妥
呵呵,从图片信息获得数字,能否举例?小弟不才,实在想不出来
作者: 司空公子    时间: 2005-8-18 11:01
比如163的注册,有验证码的图片,可以使用SQAGetProperty获取图片的src地址
Result=SQAGetProperty("Caption=TOM用户注册 - Microsoft Internet Explorer;\;Type=HTMLImage;Index=7", "src", info)
你可以查看一下这个src的链接,就是那个验证码的图片。这样只需要事先把图片的链接和验证码数字一一对应起来,在做自动化的过程中就可以做相应的判断,然后将相应的验证码数字输入进去,实现成功的的注册。

我在做实验的过程中试了好几个网站,结果都或多或少有点问题。
比如新浪的,它的控件名称是HTMLText=验证码,可能是因为有中文的缘故,所以用SQAGetProperty没有抓出src的信息,说找不到控件。
爬爬大陆的验证码图片,它每一个数字都是不同的图片,所以如果要验证的话就要麻烦一点。
CSDN的验证码更有趣,不知道它用的是什么算法,好像跟ip、时间都有关系的,而且不断刷新这个src的话,验证码还会不断的变化。碰到这种问题就需要和开发人员好好沟通了,搞清楚他们是怎么设置验证码这个功能的。
作者: DontTest    时间: 2005-8-18 11:17
To 司空公子
     图片验证之所以存在,我想一个原因就是为了防止用工具暴力**..所以如果robot可以提取并分析出有用信息,说明这个图片验证是做的失败的...
     当然,我并不排除你能找到办法....同理,当你找到办法时,就应该通知开发人员,告诉他们图片验证不完善.
作者: 司空公子    时间: 2005-8-18 15:19
我这样做是为了成功实现自动化测试,如果是为了要防止用工具暴力攻击的话,那干脆还是请开发人员把这个功能先给取消掉吧,反正只是做测试。
作者: 村上舞!舞!舞    时间: 2006-7-27 02:59
标题: 这个问题重新提起一下关于网页中的验证码技术
这么长时间了,这个问题重新提起一下。关于网页中的验证码技术,也让小弟我头痛了好长时间。我可以用Robot写出一个自动生成XBM图片验证的脚本来,但是不知怎么去反过来破译它。网页上出现的XBM图片验证是动态的,而且提取SRC地址后每刷新一次都是会改变的,这没有什么意义。因为是数字的,那样的组合太多了,不可能找到相对应的SRC。而破解的难点在于不知该如何去获取XBM图版验证的相关数字的掩码信息。这在下载下来图片后改成记事本的时候是可以打开的。但是如果真的硬要去读取它的掩码信息通过DDE也是有办法实现的,但这将变的更加复杂,更加没有意义,运行起来速度慢的难以想象。操作极为繁琐。所以我的想法是,如果有必要,倒是通过截 取图象区域的办法更加合算一些。当然这也仅仅只针对于位数并不多的数字的验证码。以上说的图版验证码是针对于XBM的图片验证的。大家在这一点上有什么好的办法,还望讲出来看看。
作者: ilovejolly    时间: 2006-7-27 11:38
屏蔽此功能或设置一个万能验证码

这个东西不可能有什么完美的解决办法的,不用花力气了
作者: b47617    时间: 2006-7-28 11:05
没错,在代码中把它屏蔽 掉就可以了. 不影响测试的.
作者: 5am    时间: 2006-8-1 18:16
验证码不就是为了防止重复自动登陆的么.....




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