花了两天时间才完整的完成识别验证码的登录操作,在网上看到很多关于验证码识别的方法,但是我用的qtp版本比较高级,所以还是要自己花心思研究。po上我的识别验证码的详细历程:
一、读取浏览器中的图片验证码
1.打开浏览器登录界面
2.启动qtp,不勾选web
3.录制验证码。开始录制:在录制的小条上选择insert ->text area output value. 截图验证码图片的框。
然后选择modify,output types设置为environment,name 可以改写为“getchar”。停止录制
得到的代码为:
Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Output CheckPoint("Internet Explorer_Server")
4.在录制完后的代码上加一行:
msgbox environment.Value ("getchar")
5.在qtp上点击run
这样它就会弹出验证码的消息框

二、识别word中的数字。在qtp中回放录制的验证码,将验证码输出来:
在word中选中一段图片,内容为数字,获取到图片里的数字。然后将获取到数字在word中输出来:
1,打开qtp,不选择web。录制时利用text area output value在word中选中一段图片,内容为数字,获取到图片里的数字,保存为环境变量getchar3.
2.新建一个test,调用刚录制的那个action 。然后再录制在word中输入一段文字。
3.将文字改为环境变量getchar3的值,这样在word中就会输出验证码的值了。第二个test的代码如下:
RunAction "Copy of Action1", oneIteration

msgbox environment.Value("getchar3")   #将环境变量的值用messagebox弹出来


myword=environment.Value("getchar3")        #将环境变量的值复制给一个变量
Window("Microsoft Word").WinObject("Microsoft Word 文档").Type myword #这句是录制得到的。本来是Type "1234",将"1234"改为type。
三、完整的登录OA系统。以下是action name为oa_login_code的代码内容。先录制不带web的识别验证码的checkcode action,再勾选web addin 录制登录OA系统的action。录制时OA的登录界面是打开的状态。
在checkcode action中可以在file——setting--environment--internal value,看到getchar。但在调用它的action中不能看到这个环境变量值。直接使用这个环境变量即可。
RunAction "Copy of checkcode", oneIteration MyWebElement=environment.Value ("getchar") Browser("流程管道,知识活水").Page("流程管道,知识活水").WebEdit("authcode").Set MyWebElement Browser("流程管道,知识活水").Page("流程管道,知识活水").WebEdit("j_username").Set "078057" 
Browser("流程管道,知识活水").Page("流程管道,知识活水").WebEdit("j password")

Browser("流程管道,知识活水").Page("流程管道,知识活水").WebEdit("j_password").SetSecure "541303024777c70d"


Browser("流程管道,知识活水").Page("流程管道,知识活水").Image("Submit").Click 2,12
其中checkcode action的代码:
Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Output CheckPoint("Internet Explorer_Server")

运行完整action后的结果:

 
错误记录一:上面的代码是以windows的方式录制了截图验证码图片读取其中的文本值,将其存为环境变量getchar。我将值存为global data ,回放的时候这个值不会变,存为环境变量则每次都能获取到正确的验证码。
错误记录二:我单独运行调用程序时,在qtp自己的result中可以看到验证码获取成功。但是先用户名、再密码,再验证码,获取的验证码的值就为空。于是将调用识别验证码的语句放在第一句,先输入验证码(上面的代码是运行成功的代码)。这样就可以成功登录了。可能是因为截图识别框要靠鼠标和坐标抓取。

通过识别验证码的程序学习到:

1.屏蔽多行,单独验证某行看是否通过。然后再执行多步
2.qtp的验证码识别是通过抓取图片中的文本进行识别。现在只能识别英文。如果录制时选择中文(在tools-options--gui testing-text recognition中设置),也识别不到。
qtp11.5 OCR设置:在tools-options--gui testing-text recognition中设置。我在win7上装的只有OCR这一种方式。
3.录制时,有时候录制不生成代码,有时候回放不成功,要重新打开IE浏览器。

qtp识别验证码的更多相关文章

  1. 【转载】loadrunner使用system()函数调用Tesseract-OCR识别验证码遇到的问题

    俗话说前人栽树,后人乘凉,此话一点不假,结合云层的一遍文章:http://bbs.51testing.com/thread-533920-1-1.html,知道还有一个Tesseract-OCR可以用 ...

  2. C#识别验证码技术-Tesseract

    相信大家在开发一些程序会有识别图片上文字(即所谓的OCR)的需求,比如识别车牌.识别图片格式的商品价格.识别图片格式的邮箱地址等等,当然需求最多的还是识别验证码.如果要完成这些OCR的工作,需要你掌握 ...

  3. java识别验证码

    所需资源下载链接(资源免费,重在分享) Tesseract:http://download.csdn.net/detail/chenyangqi/9190667 jai_imageio-1.1-alp ...

  4. loadrunner使用system()函数调用Tesseract-OCR识别验证码遇到的问题

    俗话说前人栽树,后人乘凉,此话一点不假,结合云层的一遍文章:http://bbs.51testing.com/thread-533920-1-1.html,知道还有一个Tesseract-OCR可以用 ...

  5. python识别验证码——一般的数字加字母验证码识别

    1.验证码的识别是有针对性的,不同的系统.应用的验证码区别有大有小,只要处理好图片,利用好pytesseract,一般的验证码都可以识别 2.我在识别验证码的路上走了很多弯路,重点应该放在怎么把图片处 ...

  6. python识别验证码——PIL,pytesser,pytesseract的安装

    1.使用Python识别验证码需要安装Python的图像处理模块(PIL.pytesser.pytesseract) (安装过程需要pip,在我的Python中已经安装pip了,pip的安装就不在赘述 ...

  7. Python爬虫入门教程 60-100 python识别验证码,阿里、腾讯、百度、聚合数据等大公司都这么干

    常见验证码 之前的博客中已经解决了一些常见验证码的问题,但是验证码是层出不穷的,目前解决验证码除了通过常规手段解决以外,还可以通过人工智能领域的深度学习去解决 深度学习?! 无疑对爬虫coder提高了 ...

  8. Java使用J4L识别验证码

    1.首先要下载j4l的相应文件和jar 下载地址:http://www.java4less.com/ocrtools/ocrtools.php?info=download 2.下载完成之后解压,文件目 ...

  9. python 基于机器学习识别验证码

    1.背景    验证码自动识别在模拟登陆上使用的较为广泛,一直有耳闻好多人在使用机器学习来识别验证码,最近因为刚好接触这方面的知识,所以特定研究了一番.发现网上已有很多基于machine learni ...

随机推荐

  1. 修改Docker0网桥默认网段

    Docker--修改Docker0网桥默认网段 修改文件 /etc/docker/daemon.json 添加内容 "bip": "ip/netmask" [ ...

  2. 【转】MySQL-Utilities,mysql工具包

    原文:https://blog.csdn.net/leshami/article/details/52795777 MySQL Utilities 是一组基于python语言编写的python库的命令 ...

  3. 三校联训 小澳的葫芦(calabash) 题解

    题面:小澳的葫芦[ 题目描述]小澳最喜欢的歌曲就是<葫芦娃>.一日表演唱歌,他尽了洪荒之力,唱响心中圣歌.随之,小澳进入了葫芦世界.葫芦世界有 n 个葫芦,标号为 1~ n. n 个葫芦由 ...

  4. xml文件简单读取,循环遍历

    xml文件的简单读取出来生成dom4j.Document对象树,循环遍历获取节点 例子: import java.util.Iterator; import org.dom4j.Document; i ...

  5. Head First PHP&MySQl第二章代码

    PHP: <html> <head> <title>外星人绑架了我--报道一起绑架</title> </head> <body> ...

  6. import和from.…import…

    import和from.-import- 在讲之前我们先来讲一下怎样去下载第三方库,我们把python看作一部手机,pip就是应用管家,第三方库里面的模块就是应用管家里面的一个应用 一.import模 ...

  7. vue报错 Missing required prop: "value"-----(v-model 与 :model的区别)

    找不到value值 原因:这个错是因为自己绑定值得问题,将v-model 写成了:model . v-model: 是vue内置的双向数据绑定,父子组件的双向绑定,通常用于input数据的双向绑定,用 ...

  8. 利用ios safari浏览器生成桌面快捷方式并唤醒app的示例代码

    html 内容: //通过a链接唤醒app  <a href="app约定好的scheme" id="qbt" style="display:n ...

  9. 76. Minimum Window Substring (JAVA)

    Given a string S and a string T, find the minimum window in S which will contain all the characters ...

  10. 2019-11-29-C#-在-8.0-对比-string-和-string_-的类型

    title author date CreateTime categories C# 在 8.0 对比 string 和 string? 的类型 lindexi 2019-11-29 8:59:0 + ...