java-selenium 截取界面验证码图片并对图片文本进行识别

参考链接

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();
        }

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值