|
最近开始学习QTP,遇到识别验证码的问题,请各位高手帮忙看下~
我是在网上找的相关资料,道理看明白了,也照着做了,不过发现识别不出来。
主要表现为,当我先去掉web addin进行第一次录制的时候,脚本命名为actionA,那个脚本单独运行是可以识别出来的,而且我用text=DataTable.GetSheet("Global").GetParameter("Internet_Explorer_ServerOutput_Text_out")
msgbox text 也可以正常读出参数。
问题是,当去掉web addin开始第二次录制,以insert call to copy of action方式嵌套调用actionA,却读不到任何数据。而且此时actionA中的msgbox text就读不到数据了,更别说后面的msgbox myCode了。
关于actionA的action call properties 中输出参数我是如下图1设置的。
使用的是QTP 9.2版本
下面贴出参考的原文,请弄过的朋友帮忙看下,搞了两天这个问题也没解决掉。
qq:123955349 非常感谢!
--------------------------------参考资料----------------------------------------------------------
1.在qtp启动时勾掉web addin,然后开始录制,选择Insert->output value->text area output value,鼠标变成之字形然后把所要获取对象文本的区域选中(这里录制的是百度注册页面),如下图2及图3:
点击"OK"
点击"OK"然后保存脚本为GetCharTest,脚本代码:Window("Microsoft Internet Explorer").WinObject("Internet Explorer_Server").Output CheckPoint("Internet Explorer_Server")
可以输入Set text=DataTable.GetSheet("Global").GetParameter("Internet_Explorer_ServerOutput_Text_out")
msgbox text 来查看文本内容
2.关掉QTP,再打开QTP,选中web addin录制脚本,录制完成后把第一步录制的脚本通过insert call to copy of action添加进去
脚本如下:
Dim myCode
Browser("百度用户注册").Page("百度用户注册").WebEdit("username").Set DataTable("username", dtGlobalSheet)
Browser("百度用户注册").Page("百度用户注册").WebEdit("loginpass").SetSecure "4ec464f8735b7a43e936bed4711b14866c4fe932f1211c20803caf79"
Browser("百度用户注册").Page("百度用户注册").WebEdit("verifypass").SetSecure "4ec464fda5f5858ea1f948024dfaae5bd4955cad1d5307aee397c26c"
Browser("百度用户注册").Page("百度用户注册").WebEdit("email").Set "zy66688@12.com"
Browser("百度用户注册").Page("百度用户注册_2").WebEdit("verifycode").Click
RunAction "GetChar", oneIteration,myCode
Set myCode=DataTable.GetSheet("Global").GetParameter("Internet_Explorer_ServerOutput_Text_out")
msgbox myCode
Browser("百度用户注册").Page("百度用户注册_2").WebEdit("verifycode").Set "NYRA"
Browser("百度用户注册").Page("百度用户注册_2").WebButton("同意以下协议并提交").Drag 84,16
Browser("百度用户注册").Page("百度用户注册_3").Sync
3.回放脚本,由于受多种因素的影响,这种方法大部分识别的都有错误,但脚本是可以通过的。。 |
|