IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 如何使用Selenium自动化测试工具获取动态图片验证码? -> 正文阅读

[开发测试]如何使用Selenium自动化测试工具获取动态图片验证码?

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

在我们做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自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试等。

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

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 12:07:08  更:2022-04-26 12:08:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 20:27:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码