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
如识别如下验证码:
运行结果为:
欢迎加入交流群:Selenium学习群: 628908894