关于图片验证码的文章,我想大家都应该看过类似的文章了。

在我们做UI自动化的时候,经常会遇到图片验证码的问题。

当开发不给咱们提供万能验证码,或者测试第三方网站比如知乎的时候,我们就需要自己去识别验证码。

OCR

OCR是一种图像文字识别的技术,例如图中的验证码,我们用肉眼识别就是c5s3,但机器可不比咱们肉眼。所以我们要利用ocr技术,让我们的Python脚本自动通过图片识别出对应的文字。

常见的识别类库

在Python中其实有许多识别类库,这里只介绍博主自己实践过的成功率还不错的: 百度ocr。

简单的说,就是百度提供了一个SDK,让我们传入图片数据,从而拿到识别的结果。ocr的细节我们不需要关心。

申请开通OCR

首先我们得有一个百度账号,这个相信大家都有,没有的可以申请一个。

登录百度控制台,进入https://login.bce.baidu.com/并登录。

选择文字识别:

创建应用:

填写相关应用信息:

创建好了之后可以看到具体的应用信息,记住这3个关键信息。待会会用到。

·appid

·apikey

·secret key

熟悉OCR文档

官方文档地址: https://cloud.baidu.com/doc/OCR/s/wkibizyjk

文档会写的比较清楚,简单的说就是通过你的appid,api key和secret key获取一个client,接着你就可以调用client的api去获取图片中的文字了。官方的SDK还是比较贴心的。

·安装 SDK

pip install baidu-aip

讲完了文字怎么识别,接着就来说说标题中的动态图片验证码。

动态图片验证码

这个概念是我自己命名的,一般来说,我们的一张图片都是对应唯一一个 url 的,比如:

https://yuque.com?image=dshqadiau

(这个地址是我编的)一般来说 image 字段的值不同,图片也就不同,都是一串随机的或者规律的不重复数据,确保图片不会重复。

但是博主最近遇到了这样一种情况:

输入一个 url,每次输入,拿到的图片都不一样。

这样就会带来一个很严重的问题,页面上你虽然读取了图片的信息。我们把图片的url 传递给百度 sdk 的时候,url 由于再次调用,导致图片发生了变化。

比如网站上显示的是: c5s3,调用百度 sdk 的时候,百度会通过 url 读取图片,但再次读取,图片可能变成了 lfew。

不信大家可以看看这个图片地址:

怎么解决呢?

好在百度 sdk,他不仅仅支持 url,还支持图片文件和 base64 的图片数据。我们看看官方文档:

再回到 Selenium 里面,我们怎么才能获取到验证码那张图片呢?

思考一下:

1.读取 img 标签的 src,然后下载图片,保存图片文件再转为 base64,很显然这个方法行不通,为什么呢?

因为 img 的 src 属性就是刚才这个 url,你去获取一遍 url,它同样会变化。

2.截图,裁剪出验证码部分,扔给百度去识别可行是可行,但是会不会太复杂了?

如果我只对验证码的 img 元素进行截图,生成 base64 的数据是不是更方便?

其实呢,selenium 作为一款老牌的自动化测试工具,很多方法供大于求了。所以它是有这样的功能的!

最后:

可以我的个人V:atstudy-js,可以免费领取一份10G软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Mysql数据库、抓包工具、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试等。

这些测试资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

如何使用Selenium自动化测试工具获取动态图片验证码?相关推荐

  1. 【Python爬虫】<万物可爬>Selenium+自动化测试工具 获取数据

    目录 第一个爬虫程序: Web请求的全过程剖析: HTTP协议: 请求: 请求头中常见的重要内容: 请求方式: 响应: Requests: 数据解析: 数据提取的三种解析方式: 正则表达式: 爬取案例 ...

  2. Python高级特性与网络爬虫(二):使用Selenium自动化测试工具爬取一号店商品信息

    上一篇介绍了Ajax动态渲染的页面的分析和爬取,通过JavaScript动态渲染的页面的方式不只有ajax这一种,还有很多其他的方式,分析他们的网页结构和加密参数难度非常大,为了解决这样的页面的数据爬 ...

  3. 第六章 selenium自动化测试工具:天下工具为我所用

    简介 Selenium是一个Web的自动化测试工具,类型像我们玩游戏用的按键精灵,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器). Selenium 可以根据我们的指令,让浏览器自 ...

  4. Selenium自动化测试工具的介绍与使用

    Selenium自动化测试 什么是自动化测试 自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行 结果.总的概括即:将人为驱动的测试行为转化为机器执行 ...

  5. 禅道与selenium自动化测试工具

    文章目录 一.禅道 1.禅道是什么工具? 二.selenium 1.什么是自动化测试? 2.自动化测试工具(为什么要选择selenium工具) 3.自动化测试的分类 4.自动化测试的优势 5.什么项目 ...

  6. Selenium自动化测试-7.获取元素属性信息

    ------·今天距2020年76天·------ 这是ITester软件测试小栈第60次推文 大家好 我是vivi小胖虎 做自动化测试 往往避免不了 获取元素信息 获取元素属性 获取元素状态 今天就 ...

  7. Vue——如何获取动态图片地址

    问题 当我们在Vue页面显示当前登录用户的头像时,该如何加载后端传过来的动态图片地址呢? 这时是固定地址,第一时间我们想到直接在src前加:,使用vue的双向数据绑定即可,但是试了多次没有效果,原来要 ...

  8. Python + Selenium(九)- 解决图片验证码登录或注册问题

    1. 解决思路 首先要获得这张验证码的图片,但是该图片一般都是用的js写的,不能够通过url进行下载. 解决方案:截图然后根据该图片的定位和长高,使用工具进行裁剪 裁剪完毕之后,使用工具解析该图片. ...

  9. Java-生成动态图片验证码

    先看效果: 获取验证码接口: @Overridepublic Map getPictureCode() {GifCaptcha gifCaptcha = new GifCaptcha(130, 48, ...

最新文章

  1. 服务器负载不高 响应慢_京东面试官问我什么是负载均衡,兄弟们我这样说对嘛?...
  2. springboot接口慢_【SpringBoot】 一种解决接口返回慢的方式
  3. python+selenium+unittest测试框架1-unittest单元测试框架和断言
  4. 计算机包含着什么,计算机基础的包含是什么?
  5. oracle怎么设置脚本,ORACLE安装预设置脚本
  6. index.php p=,弃用p值:你准备好了吗?
  7. 阶段3 2.Spring_07.银行转账案例_6 测试转账并分析案例中的问题
  8. IBM AIX5.3 linux下C/C++实现HTTPS接口
  9. python壁球小游戏——pygame之旅
  10. 两个实用型教学网站:菜鸟教程与W3School,估计是国内做得做好的了
  11. 教你如何挑选趁手的笔记本电脑!
  12. ARM开发比51开发高级吗—嵌入式就业技能分类
  13. SQL Server数据库的创建方法
  14. 你可以和十八岁一无所有的男生谈恋爱,但是当他二十八岁的时候还是一无所有,我劝你趁着离开。...
  15. zabbix的mysql模板_使用Zabbix自带MySQL模板监控MySQL
  16. 谈谈我对软件开发项目管理的理解
  17. 如何搭建自己的网站(二)
  18. Day429430431.订单服务 -谷粒商城
  19. Go 开源说第二期:GORM 剖析与最佳实践
  20. hfc网络文件服务器怎么用,HFC网络,HFC网络结构组成是什么?

热门文章

  1. Mysql中find_in_set()函数与in()函数的用法
  2. Redis设计与实现之跳跃表
  3. (java)leetcode121 买卖股票的最佳时机1(Best Time to Buy and Sell Stock)针对数组的峰值和谷底的操作
  4. SQL Server 数据库设计(ER图)
  5. The World's 100 Greatest Classical Composers
  6. 集成方法-随机森林和AdaBoost
  7. android 自定义侧边栏,android界面设计(一)侧边栏的两种实现方式
  8. AFNetworking2.4.1解析
  9. 【Linux】Ubuntu下搜狗拼音输入法
  10. cmd命令查看端口和进程信息