最简单的python使用ddddocr模块在线识别验证码后登录

import unittest
from PIL import Image
from selenium import webdriver
from time import sleep
import ddddocr


class WeChat(unittest.TestCase):

    # def __init__(self):
    def setUp(self) -> None:
        self.driver = webdriver.Chrome()
        #自己的网站
        self.driver.get('httpsXXXXXXadminIndex.html')
        #    全屏打开
        self.driver.maximize_window()

        self.driver.implicitly_wait(10)
        self.ocr = ddddocr.DdddOcr()

    def test_login_success(self):
        #  打开自己的网站会有安全认证
        self.driver.find_element('id', 'details-button').click()
        self.driver.find_element('id', 'proceed-link').click()
        self.driver.find_element('xpath', '//*[@id="layui-layer1"]/div[3]/a').click()

        sleep(1)
        self.driver.find_element('id', 'account').send_keys('BluetoothHaAdmin')
        self.driver.find_element('id', 'password').send_keys('000000')
        # 先获取屏幕截图,在找元素,定位大小,通过定位出来的地方截图后使用识别验证码模块,将其
        # 以二进制的方式识别后,输出后填写到填写验证码的位置
        self.driver.save_screenshot('Login_page.png')
        yzm_btn = self.driver.find_element('id', 'id_img')
        # 获取图片元素的位置
        loc = yzm_btn.location
        # 获取图片的宽高
        size = yzm_btn.size
        # 获取验证码上下左右的位置
        left = loc['x']
        top = loc['y']
        right = (loc['x'] + size['width'])
        bottom = (loc['y'] + size['height'])
        val = (left, top, right, bottom)
        # 打开网页截图
        login_pic = Image.open('Login_page.png')
        # print(val)
        # 通过上下左右的值,去截取验证码
        yzm_pic = login_pic.crop(val)
        yzm_pic.save('yzm.png')
        with open('yzm.png', 'rb') as f:
            img_bytes = f.read()
            # print (img_bytes)
            res = self.ocr.classification(img_bytes)
            print("验证码:", res, type(res))
            self.driver.find_element('id', 'id_webVerificationCode').send_keys(res)
        sleep(1)
        self.driver.find_element('id', 'id_loginButton').click()
        sleep(12)
        self.driver.quit()

# if __name__ == '__main__':
#     ocr = ddddocr.DdddOcr()
#     wechat = WeChat()
#     # 点击安全提醒
#     sleep(12)
#     #退出
#     wechat.driver.quit()

1.打开自己网站会有的不安全提醒,没有就去掉

2.登录系统界面

 

验证码可以看下自己截图是否正确 ,可以调节left4个位置

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值