参考链接
1、需要下载Tesseract工具并配置环境变量,步骤如下
Tesseract-OCR 下载安装和使用_tesseract-ocr下载-CSDN博客
2、需要在IDEA中导入tess4j 包;在pom.xml文件中输入如下内容
<!--导入Tesseract 用于识别验证码-->
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>4.5.4</version>
</dependency>
3、查看本地电脑是否有Microsoft VisualC++2019 如果没有则需要下载不然运行代码时会出现‘无法找到指定模块’的报错
如果没有的话下载链接如下:
Microsoft Visual C++ 2019等其他版本下载链接-CSDN博客
4、当将上面的步骤中的配置完成后,那么就可以敲代码了。首选需要打开网站
driver = ChromeDriverConfig.getChromeDriver();//调用驱动类方法获取驱动对象
driver.get("https://www.baidu.com");//打开网站
driver.manage().window().maximize();//窗口最大化
String KyxUrl=driver.getCurrentUrl();
System.out.println("获取打开界面链接地址是"+KyxUrl);
Assert.assertEquals(KyxUrl,"https://www.baidu.com","地址不同");
5、打开网站后截取整个界面,并将截取下的图片保存在指定目录中,代码如下
概步骤是为了做个验证 查看获取的验证码图片是否正确,加不加都行,重点是获取验证码的图片
try {
//截取当前屏幕内容,并保存到本地
File screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
//将截取下来的图片保存到指定目录并指定文件名
// D:\Program Files\IntelliJ IDEA 2023.3.2\NewMedia\imgTest\01.png
File pathFile = new File("D:\\Program Files\\IntelliJ IDEA 2023.3.2\\NewMedia\\imgTest\\01.png");
if (pathFile.exists()) {//判断文件是否存在
pathFile.delete();//如果文件存在则删除
}
//将屏幕截图移动到指定目录
FileUtils.moveFile(screenshot, new File("D:\\Program Files\\IntelliJ IDEA 2023.3.2\\NewMedia\\imgTest\\01.png"));
} catch (IOException e) {
e.printStackTrace();
}
6、如图所示,验证码的html标签显示如下,可以通过xpath中
By.tagName("img")来定位到验证码图片。
定位到图片后,下载二维码图片到指定目录,并通过下载的Tessercat来对验证码图片进行读取并将文本内容输出为字符串。具体代码如下:
//定义图片存放路径包括文件名
String eleLocalFileFullName = "D:\\Program Files\\IntelliJ IDEA 2023.3.2\\NewMedia\\imgTest\\Test.png";
//本地文件转为文件类型
File eleLocalFile = new File(eleLocalFileFullName);
//通过By.tagName("img")定位验证码图片位置
WebElement captchaImg = driver.findElement(By.tagName("img"));
//截取二维码图片并下载到本地默认目录
File eleScreenShotFile = captchaImg.getScreenshotAs(OutputType.FILE);
//判断指定目录中Test.png是否存在如果存在则删除
if(eleLocalFile.exists()){
eleLocalFile.delete();
}
//将本地默认路径中的验证码截图文件移动到指定目标
FileUtils.moveFile(eleScreenShotFile, eleLocalFile);
//实例化ITesseract
ITesseract tesseract = new Tesseract();
// 设置 Tesseract 数据路径,这里需要指向 tessdata 文件夹
tesseract.setDatapath("D:/Program Files/Tesseract-OCR/tessdata");
try{
// 设置识别语言,eng默认为英文,中文简体设置为"chi_sim"
tesseract.setLanguage("eng");
//读取本地图片文件
// 读取本地图片文件
String pathToImageFile = "D:/Program Files/IntelliJ IDEA 2023.3.2/NewMedia/imgTest/Test.png";
File imageFile = new File(pathToImageFile);
// 执行OCR识别
String ocrResult = tesseract.doOCR(imageFile);
// 输出识别结果
System.out.println(ocrResult);
}catch (TesseractException e){
e.printStackTrace();
}