模拟ajax 异常请求:
Ajax是一种创建交互式、快速动态网页应用的网页开发技术,无需加载整个网页的情况下,能够更新部分网页的技术。
通过在与服务器较少的数据交换,ajax可以使网页实现异步更新,可以在不重新加载整个网页的情况下,对网页进行部分更新。
服务器如何判断前端请求是一个ajax请求(异步)还是传统http请求(同步)
如果在请求的header中包含:X-Request-With:XMLHttpRequest 说明是一个ajax请求。
使用requests法请求时,header中带上X-Request-With:XMLHttpRequest模拟ajax请求,可以接收返回的json.
注意:如果非ajax请求,在接收响应的json()时,如果报错requests.exceptions.JSONDecodeError: [Errno Expecting value],说明网站设置了反爬虫。
可以尝试在header中添加cookie 、User-Agent、X-Request-With:XMLHttpRequest,发起请求后接收json()
文件上传:
参数设置案例:
# 设置文件上传参数
#imgFile:上传文件接口参数名,
# '文件路径不显示.bmp':上传后文件名
# open(r'D:\sunsun\软件测试管理\文件路径不显示.bmp','rb'):以二进制读的形式打开上传文件,
# image/bmp:文件的MME类型
img_upload_param = [('imgFile',('文件路径不显示.bmp',open(r'D:\sunsun\软件测试管理\文件路径不显示.bmp','rb'),'image/bmp'))]
传参时以files = xxxx 传入post方法
MIME类型获取:filetype库,库中有方法可以自动判断文件的MIME类型。
安装 pip install filetye
重定向(redirect):
通过各种方法将网络的请求重新定个方向转到其他位置。
重定向状态码:
301:永久性转移
302:暂时性转移
重定向后的url在响应的header中,header中的Location的值就是重定向后的URL
在重定向的接口发起请求时,需要在get()或post()中设置allow_redirects=False。
原因:
allow_redirects=True是启动重定向,系统会自动处理重定向后的地址,自动处理后就无法获取重定向后的urlle
,就无法进行下一步,这里需要设置allow_redirects=False,禁止自动化处理重定向后的url
token:是在服务端产生的,如果前端使用用户名密码向服务端请求认证,服务点认证成功,那么服务端会返回Token给前端,前端在请求时可以
带上token,证明自己请求是合法的。
登录密码加密处理:
密码加密有一定的算法,在工作环境中,如何使用加密算法对密码加密开发是知道的,我们测试时可以去问开发如何使用加密算法对密码加密,这样的话,我们在发起登录请求前,
先对密码加密,将加密后的密码传入登录接口即可。
获取接口响应时间:
r.elapsed # 获取精确到微妙为单位的响应时间
r.elapsed.total_seconds() # 获取响应时间,单位为秒,精确到微妙,一般用这个
r.elapsed.microseconds # 获取响应时间,单位为微秒
r.elapsed.seconds # 获取响应时间,单位为秒,精确到秒
r.elapsed.days # 获取响应时间,单位为天,精确到天
r.elapsed.max #能计时的最大值
r.elapsed.min #能计时的最小值
r.elapsed.resolution #能计时的最小时间单位 1微秒
设置请求的时间:在get或post中添加参数timeout=x
设置请求超时重试:
se = requests.session() # 实例化session对象
# 设置超时重试
se.mount('http://',HTTPAdapter(max_retries=3)) # 设置http请求超时重试3次
se.mount('https://',HTTPAdapter(max_retries=3))# 设置https请求超时重试3次
设置默认重试次数:
requests.DEFAULT_RETRIES = 5 #重试连接5次
设置代理服务器:
在get()或者post()中添加参数proxies = xxxx
webservices接口测试:
web service也叫XML Web Service。web service 基于soap(simple object access protocol 简单对象存取协议)协议。soap基于XML文档的调用规范。
web service接口相对于http接口好处:
1、接口中实现的方法和参数一目了然
2、不担心大小写问题,不担心中文问题
3、传递的参数可以是数组、对象等,可以处理复杂的数据类型
web service接口相对于http接口缺点:
因为要对xml进行解析,速度相对较低。
web service 接口使用suds库
json解析:当返回的json比较复杂时,可以使用。
使用jsonpath库解析json
jsonschema:可以按照一定的模式或规则校验json是否符合这个模式或规则,对于响应的json中存在变化的值,而又必须使用这个变化值断言时,使用jsonschema
requests-html 库:
requests-html 是对requests库进行了封装,添加了解析html的接口,是一个python的html解析库。pip install requests-html
requests-html支持xpath和css定位
requests-html支持java script渲染页面,需要下载一个chromium浏览器,
安装命令:pyppeteer-install。
安装chromium浏览器时需要修改下载源。