selenium截取特定区域图片识别验证码

python 复制代码
from selenium import webdriver
import time
from selenium.webdriver.common.by import By
from PIL import Image
import ddddocr
import time
driver = webdriver.Chrome()
option = webdriver.ChromeOptions()
option.add_experimental_option("detach", True)
# 忽略证书错误
option.add_argument('--ignore-certificate-errors')
# 忽略 Bluetooth: bluetooth_adapter_winrt.cc:1075 Getting Default Adapter failed. 错误
option.add_experimental_option('excludeSwitches', ['enable-automation'])
# 忽略 DevTools listening on ws://127.0.0.1... 提示
option.add_experimental_option('excludeSwitches', ['enable-logging'])
# 获取driver对象, 并将配置好的option传入进去 运行结束不关闭窗口
driver = webdriver.Chrome(options=option)
driver.get('https://xatu.168wangxiao.com/web/login?redirect=%2Fhome')

# 防止图片识别错误 try except 处理
while True:
#获取图片所在的div 或者可以直接获取图片得id 我这个图片比较麻烦 所以我获取得外层得div
    try:
        svgHeml=driver.find_element(By.XPATH,'/html/body/div[1]/div/div[2]/div/div/div/div[2]/div[1]/div/form/div[4]/div/div[2]/div')

        # 获取元素的位置和尺寸
        location = svgHeml.location
        size = svgHeml.size
        
        # 计算四个角的坐标
        x1 = location['x']
        y1 = location['y']
        x2 = location['x'] + size['width']
        y2 = location['y'] + size['height']
        
        # 输出四个角的坐标
        print("左上角坐标: (x1, y1) = ({0}, {1})".format(x1, y1))
        print("右上角坐标: (x2, y1) = ({0}, {1})".format(x2, y1))
        print("左下角坐标: (x1, y2) = ({0}, {1})".format(x1, y2))
        print("右下角坐标: (x2, y2) = ({0}, {1})".format(x2, y2))


        # 截全图
        screenshot_path = 'screenshot.png'
        driver.save_screenshot(screenshot_path)
        
        # # time.sleep(3)
        
        # # # 截取指定区域
        im = Image.open(screenshot_path)
        region = im.crop((x1, y1, x2, y2))
        
        # # 保存截图
        cropped_path = 'result_screenshot.png'
        region.save(cropped_path)
        start = time.time() # 开始时间

        # 1. 创建DdddOcr对象
        ocr = ddddocr.DdddOcr(show_ad=False)

        # 2. 读取图片
        with open(cropped_path, 'rb') as f:
            img = f.read()

        # 3. 识别图片内验证码并返回字符串
        result = ocr.classification(img)
        print("识别结果:",result)
    except:
        # 以防万一 图片识别错误 重新点击图片 重新获取验证码 执行try
        driver.find_element(By.XPATH,'/html/body/div[1]/div/div[2]/div/div/div/div[2]/div[1]/div/form/div[4]/div/div[2]/div').click()
        time.sleep(3)

参考大佬链接
Selenium 自动化截取网页指定区域

相关推荐
Smoothcloud润云10 小时前
从“预测下一个词”到“预测下一个世界状态”:世界模型作为AGI新范式的深度分析报告
人工智能·测试工具·微服务·容器·github·状态模式·agi
测试199813 小时前
postman接口测试详解
自动化测试·软件测试·python·测试工具·测试用例·接口测试·postman
测试秃头怪18 小时前
python&selenium自动化测试实战项目详解
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
简单点了19 小时前
mac安装wireshark
测试工具·macos·wireshark
西瓜程序猿2 天前
使用手机如何将纸质礼薄转换为电子礼薄?
测试工具·智能手机·创业创新·记了么·电子礼薄·份子钱
半个俗人2 天前
fiddler的基础使用
前端·测试工具·fiddler
站长工具箱2 天前
基于浏览器的键盘按键测试工具功能解析
测试工具·计算机外设
小陈的进阶之路2 天前
Selenium 滑动 vs Appium 滑动
python·selenium·测试工具·appium
程序员小远3 天前
软件测试用例总结
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
爱丽_3 天前
软件测试基础分类与核心概念整理
功能测试·测试工具·测试用例