51Testing软件测试论坛

标题: 结合Low Level Recording录制一个脚本即可解决验证码问题 [打印本页]

作者: wuyuzimu    时间: 2009-7-17 17:15
标题: 结合Low Level Recording录制一个脚本即可解决验证码问题
根据前辈的提示,通过录制两个脚本来解决验证码的问题。
后来我发现在录制的时候使用low level recording可以录制到windows对象,因此不需要录制两个脚本再使用“Call to Copy of Action”来加载另外一个录制了windows对象的Action了。
其实大部分步骤和录制两个脚本的方法一样,只是在录制到验证码的时候改用low level recording模式录制。
我照这样的方式录制了并回放成功,也不知有什么不妥的地方,我是新手,想请教大家~
脚本:
Browser("XXXXXX").Page("XXXXXX").WebEdit("username").Set "111111"
Browser("XXXXXX").Page("XXXXXX").WebEdit("password").SetSecure "4a602f33e73d00d67bae1f08906fd527"
Window("Microsoft Internet Explorer").WinObject("Internet Explorer_Server").Click 132,172
Window("Microsoft Internet Explorer").WinObject("Internet Explorer_Server").Output CheckPoint("Internet Explorer_Server")
Dim validation
validation=datatable.GetSheet("Global").GetParameter("getchar").ValueByRow(1)
Browser("XXXXXX").Page("XXXXXX").WebEdit("validation_code").Set  validation
Browser("XXXXXX").Page("XXXXXX").Image("dl").Click 60,10
Browser("XXXXXX").Page("XXXXXX").Sync
Browser("XXXXXX").Close
作者: ls_721521    时间: 2009-7-17 17:22
没明白。。。
验证码是随机产生的,你只是从datatable中获取的字符串能行吗?
作者: wuyuzimu    时间: 2009-7-17 18:04
原帖由 ls_721521 于 2009-7-17 17:22 发表
没明白。。。
验证码是随机产生的,你只是从datatable中获取的字符串能行吗?

哦,这个是根据QTP的text recognition mechanisms来实现的。详细的我没说清楚,不好意思。。。。
songfun大侠写的http://bbs.51testing.com/thread-129864-1-1.html
作者: ls_721521    时间: 2009-7-17 18:17
哦,,下班了。。
周一来的时候看看。。呵呵
作者: onlonely    时间: 2009-7-17 22:19
Window("Microsoft Internet Explorer").WinObject("Internet Explorer_Server").Output CheckPoint("Internet Explorer_Server")

就我实验来看,低级录制的对象无法插入,text output的,
能再详细点的说明下怎么插入这个output么,
就这一步无法做到了.
作者: songfun    时间: 2009-7-19 10:45
低级别录制也是解决的方案之一,这个我在上课的时候也讲过,呵呵。
方法很多,很灵活,看你怎么用。
原帖由 wuyuzimu 于 2009-7-17 17:15 发表
根据前辈的提示,通过录制两个脚本来解决验证码的问题。
后来我发现在录制的时候使用low level recording可以录制到windows对象,因此不需要录制两个脚本再使用“Call to Copy of Action”来加载另外一个录制了wind ...

作者: wuyuzimu    时间: 2009-7-20 10:06
原帖由 onlonely 于 2009-7-17 22:19 发表
Window("Microsoft Internet Explorer").WinObject("Internet Explorer_Server").Output CheckPoint("Internet Explorer_Server")

就我实验来看,低级录制的对象无法插入,text output的,
能再详细点的说明下怎么插 ...

应该是Text Area Output吧,这个行的哦,就是在低级录制的时候正常进行的,没有特殊步骤。
作者: wuyuzimu    时间: 2009-7-20 10:07
原帖由 songfun 于 2009-7-19 10:45 发表
低级别录制也是解决的方案之一,这个我在上课的时候也讲过,呵呵。
方法很多,很灵活,看你怎么用。


作者: ls_721521    时间: 2009-7-23 16:07
Window("Microsoft Internet Explorer").WinObject("Internet Explorer_Server").Output CheckPoint("Internet Explorer_Server")
低级录制后用了这个方法,但输出到excel里没有验证码这个值呀。怎么回事呢?
作者: ls_721521    时间: 2009-7-23 16:11
Output的方法怎么用?
作者: sunhope800    时间: 2009-7-24 12:26
明白了,谢谢!非常感谢!
作者: helina168    时间: 2009-7-24 21:31
一头雾水,不知道各位为什么用低级录制呢?不是低级录制和模拟录制一般都不用的吗?我还没分清它们到底什么时候用呢,请教了!
作者: lansemogu1985    时间: 2009-7-29 09:54
我选择低级录制,我点击验证码的文本框,录制不了那个点击的动作,给验证图片插入text output value 弹出了错误对话框,不知道为什么,请各位指点!
作者: lansemogu1985    时间: 2009-7-29 10:05
Window("Microsoft Internet Explorer").WinObject("Internet Explorer_Server").Click 132,172
这一句我怎么录制不到呢?我已经是低级录制了呀。
作者: kings727    时间: 2009-7-29 10:32
其实就算按宋老的方法也不是就非要2个ACTION,在一个ACTION中也可以。
1、先按WEB的方式录制
2、在同一个ACTION   ,修改SET中的设置,使用VB的录制方式,录制完再改回来。
3、其他都按宋老的方法,这样就不需要用到输入输出值了。
   onlonely这位朋友,你如果有兴趣,我们可以私下讨论下,我正好前段时间录制成功了。

[ 本帖最后由 kings727 于 2009-7-29 10:40 编辑 ]
作者: kings727    时间: 2009-7-29 10:36
原帖由 wuyuzimu 于 2009-7-17 17:15 发表
根据前辈的提示,通过录制两个脚本来解决验证码的问题。
后来我发现在录制的时候使用low level recording可以录制到windows对象,因此不需要录制两个脚本再使用“Call to Copy of Action”来加载另外一个录制了wind ...


validation
这个变量是不必要的,OUTPUT,你可以直接放到表里,然后输入的时候从表格里取值。
我是鸡蛋里挑骨头。
作者: kings727    时间: 2009-7-29 10:38
原帖由 ls_721521 于 2009-7-23 16:07 发表
Window("Microsoft Internet Explorer").WinObject("Internet Explorer_Server").Output CheckPoint("Internet Explorer_Server")
低级录制后用了这个方法,但输出到excel里没有验证码这个值呀。怎么回事呢?

脚本停止后,excel会消失,你应该去看测试报告。
作者: kings727    时间: 2009-7-29 10:39
原帖由 helina168 于 2009-7-24 21:31 发表
一头雾水,不知道各位为什么用低级录制呢?不是低级录制和模拟录制一般都不用的吗?我还没分清它们到底什么时候用呢,请教了!


在适合的时候用适合的方式,只要可以解决你的问题就可以了。
所以你也可以选择不用。
我想楼主的意思是使脚本简单点。
作者: kings727    时间: 2009-7-29 10:58
原帖由 lansemogu1985 于 2009-7-29 09:54 发表
我选择低级录制,我点击验证码的文本框,录制不了那个点击的动作,给验证图片插入text output value 弹出了错误对话框,不知道为什么,请各位指点!


  我想请你在去好好看看宋老师的那篇文章,那篇文章把原理和思路说的很清楚,人家明明说的是text area  output  value,作为测试你很不合格。
作者: lansemogu1985    时间: 2009-7-29 13:55
标题: 回复 19# 的帖子
宋老师的文章我已经看过了,我用的是QTP9.0版本,text area  output  value功能我找不到,我以为这两者功能应该差不多。
也许我做测试还不够格,但是我做测试合格不合格,我想跟讨论问题没什么关系。
作者: kings727    时间: 2009-7-29 15:09
原帖由 lansemogu1985 于 2009-7-29 13:55 发表
宋老师的文章我已经看过了,我用的是QTP9.0版本,text area  output  value功能我找不到,我以为这两者功能应该差不多。
也许我做测试还不够格,但是我做测试合格不合格,我想跟讨论问题没什么关系。


宋老师用的是QTP9.5的版本,他的文章里也写的非常清楚了,你用9.0取验证码是肯定取不到。
另外他的文章里也说清楚了 如果用text  output  value会:它提示“Cannot Retrieve text for this object(无法从这种对象上获取文本)”!
  所以还是好好去看看原文吧。
QTP9.0我没用过 是不是没有text area  output  value,我也无法妄下断言,不过你是不是。。。
   
  我可以保证按他的方法一定可以取到验证码,这点无需置疑。

[ 本帖最后由 kings727 于 2009-7-29 15:14 编辑 ]
作者: dreamsea123    时间: 2009-7-29 15:43
标题: 一个问题,
怎么将录制方式改为低级录制?
作者: dreamsea123    时间: 2009-7-29 15:50
录制过程中,在“Automation”菜单中选择“模拟录制”或者“低级录制”
作者: dreamsea123    时间: 2009-7-29 16:20
我实践了一下,运行时取出来的验证码竟然是负数,大家帮忙看一下!
如图
作者: dreamsea123    时间: 2009-7-29 16:26
解决,在录制Browser("互动交流平台 - Powered By BBSXP").Page("互动交流平台 - Powered By BBSXP").WebEdit("VerifyCode").Click时,就应该使用低级录制,录制成:Window("Microsoft Internet Explorer").WinObject("Internet Explorer_Server").Click 325,274
作者: kings727    时间: 2009-7-29 17:26
原帖由 dreamsea123 于 2009-7-29 16:26 发表
解决,在录制Browser("互动交流平台 - Powered By BBSXP").Page("互动交流平台 - Powered By BBSXP").WebEdit("VerifyCode").Click时,就应该使用低级录制,录制成:Window("Microsoft Internet Explorer").WinObjec ...

引申下:低级录制就是把所有的控件都识别成WinObject
难道不加载任何插件的录制=仅仅加载VB插件,
我试验下,录制了一个网站:不加载任何插件和仅仅加载VB 录制出来的结果是一样的,我原本以为和低级录制是一样的。
地址栏都被识别成WinComboBox
估计对于某些高级控件还是有区别,不过我没找到而已。
作者: kings727    时间: 2009-7-29 17:27
原帖由 dreamsea123 于 2009-7-29 15:50 发表
录制过程中,在“Automation”菜单中选择“模拟录制”或者“低级录制”

自问自答 ,呵呵
作者: lansemogu1985    时间: 2009-8-5 10:57
我装了个QTP10,验证码问题解决了。不过我的QTP10的JAVA插件还有.NET插件等似乎都没有破解。打开QTP10的界面如下图所示,有没有办法解决?
作者: lansemogu1985    时间: 2009-8-5 11:06
我装了个QTP10,验证码问题解决了。不过我的QTP10的JAVA插件还有.NET插件等似乎都没有破解。打开QTP10的界面如下图所示,有没有办法解决?
作者: whoamiyaya    时间: 2009-9-11 17:59
我是qtp 9.2版本的,我对那个右边那个验证码的图这里右键,只有Insert output value, 好像没有Text Area Output,还是我理解错了呢   难道这个功能9.2也不支持?

哈,刚才又研究了下,发现可以的,要在低级录制的前提下,从菜单insert里选择text area output values,然后框出验证码的范围。不过有个疑问,假如我测的页面的验证码在页面的最下面,手动的话要scroll down到页面的最下面。这样的话,直接框出这个验证码,然后运行的时候还是会出错的,会找不到这片我框出来的区域,请教一下这该怎么做呢。。。

[ 本帖最后由 whoamiyaya 于 2009-9-11 19:14 编辑 ]
作者: 苍白也蓝    时间: 2010-8-27 11:19
为什么我总出现这个错误提示,在线求解~~~~
You specified more parameters in your RunAction statement than the number of parameters defined for the action.
Line (2): "RunAction "Copy of GetChar", oneIteration,mycode".
作者: ldf326    时间: 2011-5-17 00:39
[img][attach]73086[/attach][/img]

验证码可以获取到,但是输入的时候提示参数  不正确,有时获得是乱码
Window("Microsoft Internet Explorer").WinObject("Internet Explorer_Server").Output CheckPoint("Internet Explorer_Server")
Window("Microsoft Internet Explorer").WinObject("Internet Explorer_Server").Click 358,623
Dim validation
validation=datatable.GetSheet("Global").GetParameter("output").ValueByRow(1)
MsgBox(validation)
Browser("科研之友").Page("科研之友 个人注册").WebEdit("checkcode").Set validation
作者: xiaoxiang_feizi    时间: 2013-1-14 16:34
没弄明白




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