简介:我这段时间新进了一家医疗公司,为了测试的质量和效率能提升,我们需要做接口自动化测试,碰到的第一个拦路虎就是登录时的验证码,本来我是叫开发帮忙在测试环境去掉,线上环境再加上,但是开发觉得麻烦,说为了测试的完整性,不能去掉,让我们测试自己想方法,所以就出现了我们测试人员进行验证码的分析和解决验证码问题。

目的:解决Interface接口自动化碰到的登录图文验证问题

首先要进行验证码图文验证,首先要下载ocr模块,cmd命令行命令如下:

pip install ddddocr -i https://pypi.tuna.tsinghua.edu.cn/simple

我们在页面上,进行刷新时,前端向后端发送了一个请求用于获取验证码的图片,所以我们可以知道要进行接口登录需要用到两个接口

response响应内容如下,可知响应码就在于data下,token最好也传递给下个接口

{
    "status": "00000",
    "msg": "一切OK",
    "data": {
        "image": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAZAEYDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD2SuO8VeN73w79rkg8N3d1aWWz7RdyyrBF8+3b5ZIJk5ODgfKR712Ncd8Vf+Sbat/2x/8ARyV0ws5JMqnZySZ1d3dwWFlPeXL7III2lkfBO1VGScDk8DtXKWPji6kubCTUtAmsNK1ORIrG9NykpkZxmINGvKbgPfBwD6h/xQhln+HOrpFG8jBY3IRSSFWVCx+gAJPoAag+Jk0V38ObtLaRJmvWt0tRGwYzs0qEBMfeJAJGM8CnFJ2v1KhFO1+pra5rWtWN6lto/hqbVP3YkllN0lui5JAUFvvH5SSB0BX1o8M+Jv7f+221zYTadqdhII7q0kO7ZnJVg+AGBAyCP5YJ09Vtr2702aDTr/7BdtjZc+SsuzBBPytwcjI/GuT8KwvofjDVNG1CT7bqt5bpqDaku5fPjDFAroSQhUkgBOCuOmOUrOIkk4vuaHibxnF4c1fS7FrZJ1umBuZTOEFnEXRBK4wfly5GSQMjGa6ivFrrXPCOt6t4tm13VvJku/8AiX2QCyzrFDHgiRSnykNIofb/ALJ5IY59E8Aa1/b3grTbt5N86R+RPmXzG3p8pLHrlgA2Dz8w69aqcLRTHOnyxTsdLRRRWRkFc14m8F23iqT/AEzVdWggMaxta21wFhfDFgzIVIJyRz7D0rpaKabTuhptO6MnSdBi0zTJ7Ca9vtUimZi51KUTsVKgFOR93A6e59azdP8AAmm6fqENy17qd3BbNvtLK7ujLb2zDhSiEdVGQuScfXBrqKKfMx8zMDXPCkGtXqXi6pq2nTiMRO+n3Ri81QSVDDBBwWbH+8fajSPCOn6L9pnt5ruXUrmPy5dSuZfOuCO3LArxxxjB2rkHFb9FHM7WDmdrFDRNHtPD+jW2l2IcW9upVd7bmJJJJJ9SST6c8ACo9K0O20e51GW0eYJf3BupIWIKpKR8zLxu+bAJBJAxxitOildiuwooopCP/9k=",
        "token": "6b22bde1-fce6-4cb0-aa59-4fb599499a58"
    }
}

具体的获取验证码和登录代码如下

import json
import urllib
import ddddocr
# pip install ddddocr -i https://pypi.tuna.tsinghua.edu.cn/simple
import requests
class InterfaceYanzheng():#初始化函数,获取session,之所以使用session是因为用到了两个接口,为了能不手动的传递cookie所以使用了sessiondef __init__(self):self.session = requests.Session()#获取验证码的方法def yanzhengma(self):header = {# 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36',# 'content - type': 'application / json',# 'accept': 'application / json, text / plain, * / *',# 'referer': 'https: // uat.resvent.com / web / webLogin''accept': 'application/json,text/plain, */*','accept-encoding': 'gzip,deflate,br','accept-language': 'zh-CN,zh;q=0.9','authentication-info': '2bd4d0bd-df4e-4429-b930-dbee43ca68d8','content-length': '74','content-type': 'application/json','language': 'zh','origin': 'https://uat.resvent.com','referer': 'https://uat.resvent.com/web/webLogin','sec-ch-ua': '"Not A;Brand";v="99", "Chromium";v="99", "Google Chrome";v="99"','sec-ch-ua-mobile': '?0','sec-ch-ua-platform': 'Windows','sec-fetch-dest': 'empty','sec-fetch-mode': 'cors','sec-fetch-site': 'same-origin','timezone': 'Asia/Shanghai','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36'}url = 'https://uat.resvent.com/web-server/code'yanzhengma = self.session.post(url=url,headers=header,data=json.dumps({})).json()image_url = yanzhengma['data']['image']token = yanzhengma['data']['token']urllib.request.urlretrieve(image_url, 'yanzhengma.png')ocr = ddddocr.DdddOcr()res = ''with open('yanzhengma.png', 'rb') as f:img_bytes = f.read()res = ocr.classification(img_bytes)print("验证码是: " + res)return {'res':res,'token':token}#登录的方法def login(self,yanzhengma):data = {"code": yanzhengma['res'], "username": "zhanghao", "password": "mima", "changAuthCode": ""}print(data)url = 'https://uat.resvent.com/web-server/login'header={# 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36',# 'content - type': 'application / json',# 'accept': 'application / json, text / plain, * / *',# 'referer': 'https: // uat.resvent.com / web / webLogin''cookies':'token:{yanzhengma["token"]}','accept':'application/json,text/plain, */*','accept-encoding':'gzip,deflate,br','accept-language':'zh-CN,zh;q=0.9','authentication-info':'2bd4d0bd-df4e-4429-b930-dbee43ca68d8','content-length':'74','content-type':'application/json','language':'zh','origin':'https://uat.resvent.com','sec-ch-ua':'"Not A;Brand";v="99", "Chromium";v="99", "Google Chrome";v="99"','sec-ch-ua-mobile':'?0','sec-ch-ua-platform':'Windows','sec-fetch-dest':'empty','sec-fetch-mode':'cors','sec-fetch-site':'same-origin','timezone':'Asia/Shanghai','user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36'}responses =  self.session.post(json=data,url=url,headers=header)print(responses.text)if __name__ == '__main__':interfaceYanzheng =  InterfaceYanzheng()interfaceYanzheng.login(interfaceYanzheng.yanzhengma())

Interface接口自动化登录图文验证码问题的解决办法相关推荐

  1. totolink服务器未响应,TOTOLINK 路由器 192.168.0.1登录页面打不开解决办法

    TOTOLINK 路由器 192.168.0.1登录页面打不开解决办法 2016-12-15 1.正确设置电脑IP地址:电脑连接路由器上网.用电脑设置路由器时,都需要把电脑本地连接(以太网)中的IP地 ...

  2. tplogin服务器未响应,tplogin.cn登录地址无法打开显示解决办法

    tplogin.cn地址是TPlink路由器设置的网址,在最新的TP-Link路由器中,192.168.1.1地址已经不再是它的管理地址了,而tplogin.cn用来管理路由器界面.如果需要对TPli ...

  3. 火线精英手游服务器维护,火线精英手机版登录失败进不去解决办法

    火线精英手机版登录失败进不去怎么办?火线精英手机版开测以来受到很多喜欢射击游戏的玩家喜爱,但是有玩家表示在游戏中遇到了登录失败进不去的情况,下面小编就为玩家们介绍一下火线精英手机版登录失败进不去的解决 ...

  4. ssh登录发生加密算法报错解决办法

    SSH登录加密算法报错 环境 解决办法 本次解决方案 网上的其它解决方案 环境 堡垒机的操作系统及系统版本 root@fort:~# uname -a Linux fort 4.9.0-6-amd64 ...

  5. vss登录invalid handle问题的解决办法

    vss登录invalid handle问题的解决办法 参考文章: (1)vss登录invalid handle问题的解决办法 (2)https://www.cnblogs.com/wangqiidea ...

  6. IDEA登录Github账号失败的解决办法

    IDEA登录Github账号失败的解决办法 如图,密码输入正确也无法登录 解决办法:使用token登录 1.登录GitHub,点击settings 2.生成新的token 3.将token输入到IDE ...

  7. 九龙战登录只显示一个服务器,九龙战登录失败进不去解决办法

    九龙战是腾讯推出的一款三国题材的动作竞技手游,目前已经开启了不删档测试,但是玩家们在游戏中遇到了登录失败进不去的情况.下面小编就为大家介绍一下九龙战登录失败进不去解决办法. 首先玩家们要知道九龙战是一 ...

  8. Microsoft账户登录出现0x80190001错误代码的解决办法

    Microsoft账户登录出现0x80190001错误代码的解决办法 Microsoft账户登录国内很难登上,IPV4通过修改为微软的DNS应该可以登上,但我用的IPV6,微软暂时还没有提供IPV6的 ...

  9. 乐视账号服务器关闭,乐视手机恢复出厂设置之后服务异常怎么办_无法登录乐视帐号解决办法_智能家...

    近期由于乐视账号服务器调整,出现了乐视手机重置后登录不了乐视账号,乐视手机恢复出厂设置之后服务异常是什么原因?小明同学为大家带来了无法登录乐视帐号解决办法... 乐视手机无法登录乐视帐号解决办法 乐视 ...

最新文章

  1. CV 方向,长期看好,短期谨慎?
  2. java抽象的理解_Java中抽象类的理解
  3. 利用OpenCV的级联分类器类CascadeClassifier和Haar特征实现人脸区域的检测
  4. Linux Anaconda断网创建虚拟环境
  5. 数组树/fenwicktree/Binary Indexed Tree
  6. IDA Pro 数据库文件、函数窗口、结构体窗口
  7. 基于face++的人脸识别(上)
  8. 为什么按照 Angular 官网教程执行简单的测试代码,会遇到expect is not defined的错误消息
  9. android apk如何入门
  10. 在pom.xml中配置nexus上传地址
  11. .NET Core跨平台的奥秘[下篇]:全新的布局
  12. 目标检测: Anchor-Free 时代
  13. angularjs -- 监听angularJs列表数据是否渲染完毕
  14. python中布尔运算可以用于浮点数比较_简单谈谈Python中的几种常见的数据类型
  15. 渤海银行天津分行计算机笔试,关于渤海银行笔试经验分享
  16. 区块链(一) 初识区块链
  17. 34岁程序员月薪3万2,跳槽被国企录取,看到月收入后却犹豫了!
  18. C++程序设计课程2013级学生名单
  19. 数码相机和单反相机区别
  20. SPA(单页面应用)

热门文章

  1. python上海交通大学赵璐_上海交通大学
  2. Ubuntu中程序崩溃,杀死进程方法
  3. MySQL数据库基本命令
  4. 【Flutter】----学习笔记1(1~5)
  5. 邮件合并的逆向应用,从多个Word文档中取值到Excel中
  6. Mesh Combine Studio 2 Documentation
  7. 跟随艺术家林曦的脚步 学习“只生欢喜不生愁”的生活态度
  8. 【开源毕设】一款精美的家校互动APP分享——爱吖校推 [你关注的,我们才推](持续开源更新2)
  9. 分析师不死心 仍坚信微软终将成功并购雅虎
  10. 携职教育:正式公布!中级会计成绩,你查了吗?