Selenium登录验证码解决方案细解

 

#大牛测试,专注测试技术
#qq:2574674466
#简简单单自动化测试

  

在网站中加入验证码的目的是加强用户安全性和提高反爬虫机制,在登录网站时,经常遇到各种各样验证码如:

1) 英文与数字结合

 

 

 2)  汉字

 

 

3) 图形,如12306登录

 

 

等等,因验证码的存在,对自动化测试工具造成极大困扰

有困难,但还是要解决的........

以下列出一些处理策略

1)调用OCR识别:

       优势:开源

       劣势:识别率低

    步骤、tesseract 安装

   #

#pip install pytesseract

 如:识别以下数字

#大牛测试,专注测试技术
#qq:2574674466
#简简单单自动化测试
from PIL import Image
from pytesseract import pytesseract
#使用PIL打开图片
im = Image.open("t.PNG")
code = pytesseract.image_to_string(im)
print(code)

 

 识别英文字母与数字

 

 

经测试以上验证码,失败:

 

  综以上可见:准确率不是太高

 

2)调用API使用第三方平台识别验证码

    本篇以斐斐打码平台作一介绍

    ①  登录“斐斐”官网 注册

  http://www.fateadm.com/

  ②打开用户中心 进行充值,充值后会获得相应积分,每次失败会扣除积分

充值中心,学习用,仅需充值1分钱便好。

 

 

 

 

 

  ③ 记住PD账号与PD秘钥

 

  ④计费标准模组,根据要识别的内容选择类型

 

 如 4为英数混合 选择  30400

 

 

⑤http://docs.fateadm.com/web/#/1?page_id=17  下载python api

 

 

⑥找到TestFunc()方法,作以下修改

 

#大牛测试,专注测试技术
#qq:2574674466
#简简单单自动化测试
def TestFunc():
    pd_id           = ""     #用户中心页可以查询到pd信息
    pd_key          = ""
    app_id          = "100001"     #开发者分成用的账号,在开发者中心可以查询到
    app_key         = "123456"
    #识别类型,
    #具体类型可以查看官方网站的价格页选择具体的类型,不清楚类型的,可以咨询客服
    pred_type       = "30400"
    api             = FateadmApi(app_id, app_key, pd_id, pd_key)
    # 查询余额
   #balance         = api.QueryBalcExtend()   # 直接返余额
    #api.PredictExtend()
    # api.QueryBalc()

    # 通过文件形式识别:
    file_name       = “t.png"
    result =  api.PredictFromFileExtend(pred_type,file_name)   # 直接返回识别结果
    #print(result)
    return  result

 

如识别如下验证码:

 

 运行结果为:

 

posted @ 2021-04-21 14:02  大牛测试技术  阅读(218)  评论(0编辑  收藏  举报