韦奇_UI_OCR自动化获取图片验证码

UI_OCR自动化获取图片验证码

代码

ocr_code.py

from time import sleep

import easyocr
import requests


class OcrCode:

    @classmethod
    def get_by_ocr(cls, img_url):
        # 使用requests 发请求拿到图片结果
        result = requests.get(img_url, verify=False)
        # 保存图片到本地
        with open("code.png", "wb") as f:
            f.write(result.content)
        sleep(1)
        # 实例化easyocr
        ocr = easyocr.Reader(['ch_sim', 'en'])
        # 识别图片内容,并去掉空格
        code = ocr.readtext("code.png")[0][1].replace(" ", "")
        print(f"识别到的验证码为: {code}")
        return code


test_ocr.py

from time import sleep

from selenium import webdriver
from selenium.webdriver.common.by import By

from L5.OCRCode.ocr_code import OcrCode


class TestCode:

    def setup_class(self):
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(10)
        # 打开页面
        self.driver.get("https://vip.ceshiren.com/#/ui_study/code")

    def teardown_class(self):
        self.driver.quit()

    def test_code(self):
        # 获取验证码图片链接
        img_url = self.driver.find_element(By.CSS_SELECTOR, ".code1:nth-child(2) img").get_attribute("src")
        # 获取验证码内容
        code = OcrCode.get_by_ocr(img_url)
        # 输入验证码
        self.driver.find_element(By.CSS_SELECTOR, ".code1:nth-child(2) input").send_keys(code)
        # 点击确定
        self.driver.find_element(By.CSS_SELECTOR, ".code1:nth-child(2) button").click()
        # 断言验证码是否正确
        sleep(1)
        text = self.driver.find_element(By.CSS_SELECTOR, ".el-message p").text
        print(text)
        assert text == "验证成功"