接口自动化【二】(图形验证码处理) 您所在的位置:网站首页 验证码的测试点在哪里 接口自动化【二】(图形验证码处理)

接口自动化【二】(图形验证码处理)

2024-07-11 04:51| 来源: 网络整理| 查看: 265

文章目录 前言一、图形验证码图片获取(需要实际截图做对比补充)二、调第三方接口获取验证码三、后端登录接口(举例)总结 前言

讲解了图片验证的处理;在接口测试中遇见的一些问题;多部分编码的注意点

一、图形验证码图片获取(需要实际截图做对比补充)

F12,抓取图形验证码的获取接口。(先F12,再访问登录页面)

url : http://mall.lemonban.com:8108/captcha.jpg?uuid=bc193953-8242-4d16-8663-dc8a1ffa56f4

注意:open("code.png","wb")这个函数里面的code.png,并不是在文件里早已经建立好的图片,而是只是作为一个图片文件的名字(也可以理解为一个名叫code.png的空文件,需要我们写入数据,我个人认为这种理解方式更好一点。)fs.write(resp.content)这个函数,resp.content是获取的图片的内容(这里用content是以二进制的方式获取,一般图片都是以二进制方式获取)。fs.write()这个函数是把已经获取的二进制图片的内容,写入code.png的空文件。

在代码执行完成后,就会生成一个带有实际内容的code.png文件。

二、调第三方接口获取验证码

图片识别-广告识别-目标检测-图鉴网络科技有限公司

注意:第三方图片识别是需要收费的,所以就自己充点钱进去做测试了。

 接口所需要的参数和URL:

url : http://api.ttshitu.com/predict method:post 请求数据:     username:simple     password: yuan5311645     typeid: 3     image: 文件

依据接口文档里面的方式(2种): 第一种(直接使用data数据进行上传):

文件上传,要用requests的files参数 ('filename', fileobj, 'content_type') {"image":("code.png",resp.content,"image/png")}

我们对比一下request库里面的说明

成功的请求案例:

 在这里我也发现了,用data传递json格式的数据的时候,才会指定Content-Type

在源码中不容易理解的地方:

 这种写法很容易让初学者看不懂,我也是仔细分析了才明白。

最基础的对应就是:name:file-tuple

这一句话:`file-tuple`` can be a 2-tuple ``('filename', fileobj)``, 3-tuple ``('filename', fileobj, 'content_type')``

也就是说:file-tuple也可以变成('filename', fileobj) 或者 变成 ('filename', fileobj, 'content_type')

就会写成:

name:file-tuple

name:('filename', fileobj)

name:('filename', fileobj, 'content_type')

注意:多部分编码

也就是每个部分有不同的内容类型:

有data,有file类型(图片或者其他)

参考一位博主的:

Python+requests库 POST接口图片上传 - 简书

 第二种(直接使用json参数进行上传):

图片里面的数字和字母

注意:这里的第二种方式并不是我们随意想的第二种方式,而是接口文档里面提供的第二种方式。

 

注意:

(1)不进行解码时:

 (2)使用encode的编码方式

三、后端登录接口(举例) import requests # 时间chuo的生成 import time t = int(time.time()*1000) print(t) # 生成uuid import uuid sessionuuid = uuid.uuid4() print(sessionuuid) url = 'http://mall.lemonban.com:8108/adminLogin' method = "post" # 1、正场场景 - req_body = {"principal":'student', "credentials":"123456a", "imageCode":"lemon"} resp = requests.request(method,url,json=req_body) print(resp.text) try: resp_dict = resp.json() except: print("纯粹的字符串") result = resp.text # 比对字符串是否相等、包含一部分 else: result = resp_dict # 提取值,来比对。 总结

暂无



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有