python selenium验证码处理

某次我需要selenium处理验证码的时候,发现网上大部分文章都是对验证码的部分进行截屏然后抠图,然后OCR进行处理,我自己认为这种截屏抠图方式比较繁琐,于是我直接获取验证码base64数据或者bytes数据,然后OCR解析进行其他处理。

示例代码如下:

import undetected_chromedriver.v2 as uc
from selenium.webdriver.common.by import By
import ddddocr
import time


if __name__ == '__main__':
    browser = uc.Chrome()
    browser.get("https://support.huawei.com/enterprise/ecareWechat")
    # 隐式等待
    browser.implicitly_wait(5)
    # 处理内嵌html
    element = browser.find_element(by=By.CLASS_NAME, value="wechat")
    browser.switch_to.frame(element)
    # 定位到图片元素
    img = browser.find_element(by=By.XPATH, value='//*[@id="imgObj"]')
    # 获取图片bytes数据
    # data = img.screenshot_as_png
    # 获取图片base64数据
    data = img.screenshot_as_base64
    ocr = ddddocr.DdddOcr()
    # 进行验证码识别
    text = ocr.classification(img_base64=data)  # img_bytes=data 这是bytes数据传入时,但在pycharm 会冒黄,我也不清楚为啥
    print(text)
    time.sleep(5)
    browser.quit()

这样就能得到验证码字符串了

运行结果:

python selenium验证码处理_第1张图片

ddddocr python开源免费的OCR文字识别库

下载:pip install ddddocr

undetected_chromedriver      selenium防止被浏览器识别的github上的开源的包

下载:pip install undetected_chromedriver -i https://pypi.douban.com/simple  防selenium被识别(也会自动下载匹配浏览器selenium对应版本的chromedriver.exe)

你可能感兴趣的:(selenium,测试工具)