在进行自动化测试,我发现很多人卡在验证码无法是识别的路上,往往都是需要开发提供万能码或者取消验证码,但是有的时候需要真实场景模拟,验证码的获取就比较困难,今天分享一个自己亲测的UI自动化测试登陆时验证码输入的有效简单的解决方法。
首先我采用的是python+tesserocr来识别验证码,下面是具体步骤
第一步、环境准备
1、python安装pytesseract和pillow库
2、win10安装tesserocr,下载tesseract并安装,默认路径即可
环境变量的配置:我的电脑-属性-高级设置-环境变量
系统变量中增减path变量:tesseract安装路径
系统新增TESSDATA_PREFIX 变量:tesseract安装路径\tessdata
3 修改pytesseract.py文件如下图
第二步:编写代码获取验证码
from pytesseract import pytesseractfrom PIL import Imagefrom selenium import webdriverimport time as tfrom mon.by import Bydriver = webdriver.Chrome()driver.maximize_window()driver.implicitly_wait(30)driver.get('需要输入验证码网页的url')driver.find_element(By.ID, 'details-button').click()driver.find_element(By.ID, 'proceed-link').click()driver.find_element(By.XPATH,'验证码的定位位置').screenshot('验证码命名') # 截取验证码并保存到本地img = Image.open(r'验证码命名')ver = pytesseract.image_to_string(img,lang = 'eng') #识别验证码print(ver)with open('index.txt', "w") as f: f.write("".join(ver.split())) # 去除空格的处理with open("index.txt", "r") as f: # 获得验证码并赋值给aa = f.read()driver.find_element(By.XPATH,'输入验证码框的定位位置').send_keys(ver) # 输入验证码t.sleep(3)driver.quit()
第三步:成功获取验证码