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 == "验证成功"