selenium--自动化识别图片验证码并输入

这篇具有很好参考价值的文章主要介绍了selenium--自动化识别图片验证码并输入。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先注册百度智能云账号(这里我用的是百度智能云):

selenium--自动化识别图片验证码并输入

 

 1.要在这里面保存好API Key 和 Secret Key

 2.然后进入查看文档

selenium--自动化识别图片验证码并输入

 

在pycharm中:

import requests
import redis
import base64

# 封装百度类
class Baidu:
    def __init__(self):

        # apikey 写入自己先前保存好的
        self.apikey = ""
        # api secretkey
        self.apisecret = ""

        self.redis = redis.Redis(password="123",decode_responses=True)


    # 文字图片识别
    def cor(self, filename="./test.png"):

        # 定义请求地址
        request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"
        # 读取图片
        f = open(filename, 'rb')
        # base64编码
        img = base64.b64encode(f.read())
        # 定义请求参数
        params = {"image": img}

        access_token = self.redis.get("baidutoken")

        request_url = request_url + "?access_token=" + access_token
        headers = {'content-type': 'application/x-www-form-urlencoded'}
        # 发起请求
        response = requests.post(request_url, data=params, headers=headers)
        if response:
            print(response.json())
            # 获取识别的结果
            num = ""
            for x in response.json()["words_result"]:
                num += x["words"]

            return num

    # 获取token
    def get_token(self):
        host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=%s' \
               '&client_secret=%s' % (self.apikey,self.apisecret)
        response = requests.get(host)
        if response:
            print(response.json())
            # 存储token
            try:
                self.redis.set("baidutoken",response.json()["access_token"])
            except Exception as e:
                print("请求报错,无法获取token")



if __name__ == '__main__':
    baidu = Baidu()
    print(baidu.cor())

导入自动化文件:

from baiduapi import Baidu

在写自动化脚本时调用封装的百度类:

注意:自动化识别文字可能会出现识别不出来的可能,要解决这个Bug。

代码分享:

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

from baiduapi import Baidu
from selenium.webdriver.edge.options import Options
# 设置配置
myoptions = Options()
myoptions.add_experimental_option("detach",True)

# 自动化注册

class AutoReg:

    # 初始化方法
    def __init__(self):
        self.url = "http://localhost:8080/reg"
        self.email = "123"
        self.password = "123"

        # 初始化浏览器实例
        self.browser = webdriver.Edge()
        # 打开网页
        self.browser.get("http://localhost:8080/reg")

    # 注册动作
    def first(self):
        # 延迟
        time.sleep(2)
        # 填写表单
        self.browser.find_elements(By.TAG_NAME, "input")[0].send_keys("123")
        self.browser.find_elements(By.TAG_NAME, "input")[1].send_keys("123")
        # 生成验证码
        self.imgcode()
        # 识别
        num = self.cor()

        # 写入验证码

        if num:
            self.send(num)

    # 写入验证码
    def send(self,num):
        self.browser.find_elements(By.TAG_NAME, "input")[2].send_keys(num)
        self.browser.find_elements(By.CLASS_NAME,"van-button")[1].click()

    # 重新生成图片验证码
    def imgcode(self):
        # 生成验证码
        self.browser.find_elements(By.CLASS_NAME, "van-button")[0].click()
        time.sleep(2)

        # 选择随机图片,截图
        img = self.browser.find_elements(By.TAG_NAME, "img")[0]

        # 截图该元素图片
        img.screenshot("test.png")

    # 识别方法
    def cor(self):

        # 实例化对象
        baidu = Baidu()
        num = baidu.cor()

        times = 0
        success = False

        while times<3 and not success:

            print("第%s次" % (times+1))

            num = baidu.cor()
            if len(num) == 4:
                success = True
            else:
                self.imgcode()
            times += 1
        if success:
            return num
        else:
            return None



    # 析构方法
    def __del__(self):

        time.sleep(3)
        self.browser.quit()






if __name__ == '__main__':
    autoreg = AutoReg()
    autoreg.first()
    exit(-1)

selenium--自动化识别图片验证码并输入

 

其中涉及到页面截屏功能,根据当前页面来识别图片验证码,进行输入,要考虑好逻辑,避免出现

识别不出来的Bug!!!文章来源地址https://www.toymoban.com/news/detail-503643.html

到了这里,关于selenium--自动化识别图片验证码并输入的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自动化测试识别验证码方法

    在进行自动化测试,我发现很多人卡在验证码无法是识别的路上,往往都是需要开发提供万能码或者取消验证码,但是有的时候需要真实场景模拟,验证码的获取就比较困难,今天分享一个自己亲测的UI自动化测试登陆时验证码输入的有效简单的解决方法。 首先我采用的是

    2024年02月13日
    浏览(46)
  • Python利用Selenium实现自动化验证登录

    Python里面使用Selenium是一个很重要的自动化测试模块,我们可以用它写一个验证登录脚本,有了这个可以用来保存cookie信息等,下面是一个简单的demo:

    2024年02月15日
    浏览(46)
  • Selenium+Python自动化测试之验证码处理

    验证码识别技术 (很难达到100%) 添加Cookie (*****五星推荐) 逻辑方式: 1:打开验证码所在页面,截图。获取验证码元素坐标,剪切出验证码图片,识别 以途牛为例 代码: 步骤: 1:获取指定cookie: get_cookie(cookie名) 2:获取本网站所有本地cookies: get_cookies() 3:添加cookie:ad

    2024年02月04日
    浏览(43)
  • Selenium解决滑块验证问题:自动化与技巧

    滑块验证是一种常见的人机验证机制,用于识别和防止自动化程序的访问。在爬虫和自动化测试中,我们经常面临需要处理滑块验证的情况。本文将介绍如何使用 Selenium 库处理滑块验证问题。 一、安装 Selenium 首先,确保你已经安装了 Selenium。你可以使用以下命令通过 pip 安

    2024年01月25日
    浏览(56)
  • Selenium批量自动化获取并下载图片

    Selenium批量自动化获取并下载图片 在现代的Web开发中,自动化测试和数据抓取已经成为不可或缺的一部分。Selenium作为一款强大的自动化测试工具,不仅可以用于测试Web应用,还可以用于批量获取网页上的图片。本文将介绍如何使用Selenium批量自动化获取并下载图片。 一、准

    2024年01月22日
    浏览(46)
  • 让测试人头疼的web自动化之验证码识别彻底解决方案

    对于web应用程序来讲,处于安全性考虑,在登录的时候,都会设置验证码,验证码的类型种类繁多,有图片中辨别数字字母的,有点击图片中指定的文字的,也有算术计算结果的,再复杂一点就是滑动验证的。诸如此类的验证码,对我们的系统增加了安全性的保障,但是对于

    2024年01月17日
    浏览(37)
  • Python GUI自动化神器pyautogui,精准识别图片并自动点赞(32)

    小朋友们好,大朋友们好! 我是猫妹,一名爱上Python编程的小学生。 欢迎和猫妹一起,趣味学Python。 今日主题 你听过GUI自动化吗? GUI自动化就是用软件模拟鼠标和键盘的操作。 提到Python GUI自动化,不得不提pyautogui,它使用简单功能强大。 没有安装pyautogui库的话,先用p

    2023年04月23日
    浏览(48)
  • selenium截取特定区域图片识别验证码

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

    2024年04月15日
    浏览(47)
  • 自动化测试之web自动化(Selenium)

     🔥 交流讨论: 欢迎加入我们一起学习! 🔥 资源分享 : 耗时200+小时精选的「软件测试」资料包 🔥  教程推荐: 火遍全网的《软件测试》教程   📢 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! yycnblog 自动化测试概念:让程序代替人为去验证程序功能的过程,本

    2024年03月15日
    浏览(72)
  • Selenium自动化测试实战之自动化测试基础

    自动化测试概念 是把以人为驱动的测试转化为机器执行的一种过程,它是一种以程序测试程序的过程。 自动化只是测试方式,跟测试阶段无关。 可以把任何测试工作写一个程序自动化实现都可以称为自动化测试。 selenium自动化测试: 2023最新的Selenium自动化测试实战,没有比

    2024年02月13日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包