python selenium 验证码识别_Pythonseleniumtesseract自动化测试随机码、验证码(Captcha)的OCR识别解决方案参考...
在自动化测试或者安全渗透测试中,Captcha验证码的问题经常困扰我们,还好现在OCR和AI逐渐发展起来,在这块解决上越来越支撑到位。
我推荐的几种方式,一种是对于简单的验证码,用开源的一些OCR图片处理包即可,对于复杂的识别率要求非常高的,可以考虑百度等公司的OCR有偿服务(当然注册后好像每天可以免费试用上百次,普通测试够用了)。
本人环境: win10,python3.x, pip( python3安装版会自带), pycharm, tesseract-ocr-setup-3.02.02.exe,
pytesser3 ,pytesseract ,selenium(chrome浏览器以及匹配版本的浏览器驱动geckodriver.exe),pillow 5.3,pillow-PIL 0.1
注意事项:
A.务必单独下载安装tesseract-ocr-setup-3.02.02.exe(会自动配置好PATH环境变量),安装好后可以运行DOS命令执行
tesseract G:\temp\captcha\image_code.png g:\temp\abc_123 digits_numbers
tesseract 要识别的图片 识别出来后字符的保存文件,默认为.txt , tesseract安装后Tesseract-OCR\tessdata\configs\路径有个digits文件,可以定义识别白名单,比如只识别数字等,使用后可以提高识别率,可以在原来文件直接改,我这里是复制后修改并且重新命名为digits_numbers,如果不使用白名单命令行可以不加digits_numbers
B.在pytesser3目录下的__init__.py文件里,要修改好以下这行,主要是配置好tesseract.exe的安装路径,注意.exe不需要写
#请务必修改下面的tesseract的name 换成你安装的ocr路径,谢谢!
tesseract_exe_name = 'D:\\programs\\Tesseract-OCR\\tesseract' # Name of
#tesseract_exe_name = 'c:\\Program Files (x86)\\Tesseract-OCR\\tesseract'
以下是pycharm下的工程包和OCR核心源码,至于后续识别后如何登陆就是普通的接口测试或者selenium等UI自动化范畴了,此处省略一万字。如果连UI自动化都不精,不建议直接做这个,赶快回家看书去。
from selenium import webdriver
import pytesser3
import os
import sys, time
from PIL import Image, ImageEnhance
url = "http://登陆的URL"
driver = webdriver.Chrome()
time.sleep(2)
driver.get(url)
time.sleep(5)
try:
account = driver.find_element_by_id('_account')
password = driver.find_element_by_id('_password')
region = driver.find_element_by_id('_regionId')
captcha = driver.find_element_by_id('_captcha')
except:
print("查找元素出现异常")
# 网页截图 + 验证码截图
try:
driver.get_screenshot_as_file('G:\\temp\\page\\loginPage1.png') # 比较好理解
im = Image.open('G:\\temp\\page\\loginPage1.png')
box = (884, 684, 1024, 734) # 设置要裁剪的区域,这个坐标是验证码图片这个长方形的左上角坐标和右下角坐标,不懂可以问UI美工,用图形编辑工具很容易获得
region = im.crop(box) # 此时,region是一个新的图像对象。
region.save("G:\\temp\\captcha\\image_code.png")
except:
print("网页截图 + 验证码截图出现异常")
driver.close()
# --------------------图片增强+自动识别简单验证码-----------------------------
# 防止图片还没保存好,就开始识别
time.sleep(3)
im = Image.open("G:\\temp\\captcha\\image_code.png")
imgry = im.convert('L') # 图像加强,二值化
sharpness = ImageEnhance.Contrast(imgry) # 对比度增强
sharp_img = sharpness.enhance(2.0)
sharp_img.save("G:\\temp\\captcha\\image_code.png")
time.sleep(2)
def image_file_to_string(file):
cwd = os.getcwd()
try:
os.chdir("D:\\programs\\Tesseract-OCR")
return pytesser3.image_file_to_string(file)
finally:
os.chdir(cwd)
# code即为识别出的图片数字str类型
code = image_file_to_string("G:\\temp\\captcha\\image_code.png")
time.sleep(1)
print(code)
后续省略一万字,自己用次code去完成接下来的自动化登陆即可....
有些复杂点的图片验证码识别率不高,是的,一开始我就说了,
改进参考:
1. 真正应用的时候可以考虑把打开浏览器,截图等事情换个实现方式,使用内核浏览器操作,而非真正打开可见的浏览器,这样更快。
2. OCR识别部分还需要用你要实现产品的验证码样本进行tesseract的进一步学习训练,或者换用商用OCR工具,识别率更高
python selenium 验证码识别_Pythonseleniumtesseract自动化测试随机码、验证码(Captcha)的OCR识别解决方案参考...相关推荐
- python写web自动化_使用Python+selenium实现第一个自动化测试脚本
原标题:使用Python+selenium实现第一个自动化测试脚本 最近在学web自动化,记录一下学习过程. 此处我选用python3.6+selenium3.0,均用最新版本,以适应未来需求. 环境 ...
- Python + Selenium(九)- 解决图片验证码登录或注册问题
1. 解决思路 首先要获得这张验证码的图片,但是该图片一般都是用的js写的,不能够通过url进行下载. 解决方案:截图然后根据该图片的定位和长高,使用工具进行裁剪 裁剪完毕之后,使用工具解析该图片. ...
- python + Selenium 自动化实现读取网易邮箱验证码
前面写到了一些关于python+Selenium的基础操作 的教程,这篇文章将讲解一些实战内容. 在自动化工作中,有可能会遇到一些发送邮箱验证码类似的功能,如下 我们一般的解决思路就是 : 发送邮件- ...
- Python+Selenium简单实现Web自动化测试
这篇文章是入门级别的应用Python + Selenium进行自动化测试,包括环境搭建及简单的实例.基本思想是用Firefox Selenium IDE插件录制脚本并生成Python代码,用Pytho ...
- python百度云ocr文字识别软件_基于百度云的OCR识别(Python)
2019年7月3日早上,在百度AI开发者大会上,一个来自山西的青年,将一瓶矿泉水浇在了同样来自山西的李彦宏身上. 可以回顾一下 https://b23.tv/av57665929/p1 ,着实让人一惊 ...
- OpenCV计算机视觉实战(Python)| 10、项目实战:文档扫描OCR识别
文章目录 简介 总结 1. 介绍 2. 流程 3. 程序 4. 知识点总结 简介 本节为<OpenCV计算机视觉实战(Python)>版第10讲,项目实战:文档扫描OCR识别,的总结. 总 ...
- Python+Selenium+PO模型实现自动化测试
一. PO模型介绍 在自动化中,Selenium自动化测试中有一个名字经常被提及PageObject(思想与面向对象的特征相 同),通常PO模型可以大大提高测试用例的维护效率 PO模型又叫PO设计模式 ...
- Python+Selenium PO模式Web自动化测试实战
1.项目结构 2.BASE层封装代码 # -- coding: UTF-8 -- import datetime import os from selenium.webdriver.support.s ...
- python+selenium+EcShop 学习UI自动化测试和感受自动化测试的魅力(UI自动化)
哈喽!小伙伴们好,你们的朋友像疯一样!又来了,这次分享的是学习UI自动化测试环境和让小伙伴们感受到自动化测试的魅力,实现计算机控制网站.学习路上虽有困难,但是我们一起向前,加油!与前一期一样,文末会有 ...
最新文章
- 宁波工程学院2020新生校赛(重现赛)部分题解
- 全民大数据时代已来 阿里数加平台详解
- excel中如何筛选重复数据
- 【科普】什么是Docker?看这一篇干货文章就够了!
- postgres 判断null_PostgreSQL NULLIF()用法及代码示例
- 根据压缩后的行列数和sourcemap反向定位源码
- Windows RDP远程桌面无密码账户
- winform 调用外部程序和多线程
- 不可见的unicode字符
- 工业基础类IFC—总体架构和空间结构
- 关于visio安装时出现出现回滚更改以至于安装失败的解决办法
- oracle12突然出现ora12514,【ORACLE】提示ORA-12514错误处理
- stm32-W5500-官网教程
- 计算广告——读书笔记(一)
- 简单几步实现Ubuntu22.04启用Nvidia显卡
- Redis原理以及底层数据结构初探
- 对Dilated Convolution理解
- MyBatisPlus 学习笔记_MP的AR模式
- iOS开发最新最全微信第三方登录接入流程
- 安卓实训运动健身系统_武汉一高校现高颜值网红健身打卡地
热门文章
- Git的下载安装(2020)Windows10 Git-2.26.0-64-bit
- 基于 mini2440 电阻式触摸屏:电阻式触摸屏工作原理
- 学习笔记(13):英特尔®OpenVINO™工具套件中级课程-推理引擎详解内部API
- java1.8安装_2020JDK1.8安装教程详解(一次就可安装成功)
- 架构17 社交软件红包技术10
- 通过analyzer分析dart代码
- 稳定wow60级服务器,魔兽世界:永久60级与TBC该怎么选,60级服务器真的会有玩家么?...
- ettercap主机指纹识别原理
- openwrt x86 登录不上_OpenWrt X86 安装教程
- java计算机毕业设计紫陶文化传播与学习交流网站源码+mysql数据库+系统+lw文档+部署