java+selenium+test4j 自动识别验证码

这篇博客介绍了如何在Java自动化测试中使用Tess4J库识别验证码。通过引入tess4j的jar包,避免了直接使用cmd方式调用Tesseract OCR的复杂性。在项目中添加tessdata资源并设置正确后,能够识别英文和中文验证码。文章还展示了截图、截取验证码区域以及使用Tess4J进行识别的过程,但提到了可能出现的误读问题。
摘要由CSDN通过智能技术生成

在做自动化测试的时候,经常会遇到需要输入验证码的地方,有些可以让开发屏蔽,但是有些不行,这时候,我们可以调用tesseract来实现图像的识别。

在JAVA中调用tesseract,主要有两种方式:cmd方式,tess4j方式。我要介绍的是用tess4j的方式来识别图像,得到验证码。

首先要在工程中加入tess4j的jar包,如果是maven项目,可以从中央仓库中获取https://mvnrepository.com/ 直接搜索tess4j


点击打开


选择使用比较多的,点进去


复制这段代码粘贴到maven工程的pom.xml里面


等待下载完成


安装完成之后,在Maven Dependencies库中会出现tess4j的jar包,官方解释tess4j:A Java JNA wrapper for Tesseract OCR API.也就是说:tess4j是针对tesseract进行封装的javaAPI。安装好依赖库之后,就不需要另外再安装tessereact-ocr了,因为tess4j的jar包里面自带了tessereact-ocr。

安装好之后,如果没有把文字库tessdata放到项目中,调用的时候会报错,如下

Error opening data file ./tessdata/eng.traineddata
Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory of your "tessdata" directory.
Failed loading language 'eng'
Tesseract couldn't load any languages!

Could not initialize tesseract.

这里提示的是环境变量没有设置,这是针对安装tessreact-ocr的调用的错误提示,所以按照这个去加环境变量,问题还是会出现的(这里我折腾了好久才解决),针对依赖库的方法调用,解决这个问题的正确做法是在maven项目的resources路径下添加tessdata文字库


eng.traineddata是英文语言包,识别字母和数字。如果想要识别中文(数字 + 中文),需要在下载

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值