webUI自动化测试中图片验证码的解决方法

该博客介绍了使用Python的Pytesseract和Selenium库进行网页登录自动化,并处理验证码识别的场景。当文字识别不准确导致登录失败时,通过检查URL来判断是否需要重新识别验证码并尝试登录。文章详细讲解了配置环境、截图识别验证码以及如何根据登录状态调整策略的过程。
摘要由CSDN通过智能技术生成
#! /usr/bin/env python
# -*- coding:utf-8 -*-
# author:特昂糖
import pytesseract
from PIL import Image
from selenium import webdriver
import time as t

driver=webdriver.Chrome()
driver.get('*******************')
driver.maximize_window()
driver.implicitly_wait(30)
t.sleep(2)

driver.find_element_by_xpath('//*[@id="formLogin"]/div[3]/div[3]/img').screenshot('1.png')   #截取验证码并保存到本地

ver=pytesseract.image_to_string(Image.open('1.png'))   #识别截图中的字符串

with open('index.txt',"w") as f:        #将识别出的字符串写入到文件中
    f.write("".join(ver.split()))       #因为识别到的文字有空格,所有我这里做了去除空格的处理

with open("index.txt","r") as f:        #将写入的字符串读取出来并赋值给a
    a=f.read()


driver.find_element_by_xpath('//*[@id="inputCode"]').send_keys(ver)     #将读取到的字符串填写到验证码输入框
t.sleep(3)
driver.quit()

关于怎么配置识别图片的环境,之前的文章中有提到过:使用Python+Pytesseract实现图片文字识别_特昂糖21的博客-CSDN博客一.安装tesseract1.下载链接Index of /tesseract2.网盘下载地址链接:百度网盘 请输入提取码提取码:x0kn3.配置环境变量3.1配置TESSDATA_PREFIX变量3.2配置Path变量4.验证是否安装成功:C:\Users\特昂糖>tesseract -vtesseract 4.00.00alpha leptonica-1.74.1 libgif 4.1.6(?) : libjpeg 8d (libjpeg-t.https://blog.csdn.net/teangtang21/article/details/124239214?spm=1001.2014.3001.5502

那么问题来了,文字识别的准确率不是100%我们应该怎么去判断是否登录成功呢?

比如我在测试代码中做了一个if循环,判断URL是不是还是登录页面的地址,如果是,那就重新识别一下,代码如下:

#! /usr/bin/env python
# -*- coding:utf-8 -*-
# author:特昂糖
import pytesseract
from PIL import Image
from selenium import webdriver
import time as t

driver=webdriver.Chrome()
driver.get('http://****************')
driver.maximize_window()
driver.implicitly_wait(30)
t.sleep(2)

driver.find_element_by_xpath('//*[@id="formLogin"]/div[3]/div[3]/img').screenshot('1.png')   #截取验证码并保存到本地

ver=pytesseract.image_to_string(Image.open('1.png'))   #识别截图中的字符串

with open('index.txt',"w") as f:        #将识别出的字符串写入到文件中
    f.write("".join(ver.split()))       #因为识别到的文字有空格,所有我这里做了去除空格的处理

with open("index.txt","r") as f:        #将写入的字符串读取出来并赋值给a
    a=f.read()

driver.find_element_by_xpath('//*[@id="username"]').send_keys("******")  #输入用户名
t.sleep(1)
driver.find_element_by_xpath('//*[@id="password"]').send_keys("******")  #输入密码
t.sleep(1)
driver.find_element_by_xpath('//*[@id="inputCode"]').send_keys(ver)     #输入验证码
t.sleep(1)
driver.find_element_by_xpath('//*[@id="formLogin"]/div[5]/div/div/span/button')   #点击登录
t.sleep(2)
if driver.current_url=='http://**************.com':      #如果URL为登录页面的URL
    
    driver.find_element_by_xpath('//*[@id="formLogin"]/div[3]/div[3]/img').screenshot('1.png')  # 截取验证码并保存到本地
    ver = pytesseract.image_to_string(Image.open('1.png'))  # 识别截图中的字符串
    with open('index.txt', "w") as f:  # 将识别出的字符串写入到文件中
        f.write("".join(ver.split()))  # 因为识别到的文字有空格,所有我这里做了去除空格的处理
    with open("index.txt", "r") as f:  # 将写入的字符串读取出来并赋值给a
        a = f.read()

    driver.find_element_by_xpath('//*[@id="username"]').send_keys("******")  # 重新输入用户名
    t.sleep(1)
    driver.find_element_by_xpath('//*[@id="password"]').send_keys("********")  # 重新输入密码
    t.sleep(1)
    driver.find_element_by_xpath('//*[@id="inputCode"]').send_keys(ver)  # 重新输入验证码
    t.sleep(1)
    driver.find_element_by_xpath('//*[@id="formLogin"]/div[5]/div/div/span/button')  # 点击登录
    t.sleep(2)
else:
    pass
driver.quit()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值