最近搞了一套埋点自动化框架,虽然第一版不太完美,但是更新还是很效率的。
应用场景:
嵌入到任何移动端ui自动化脚本/框架中,可断言手机在执行脚本时发出的请求,包括url和url中的参数和请求体中的参数。
使用方法:
1. 下载
pip install wqrfproxy
2. 下载依赖包
pip install mitmproxy
3. 使用
(1)脚本中先引入 from wqrfproxy import *
(2)调用启动服务方法 start_wqrfproxy(port,cert)
port为端口号,不写就默认8000,cert为本地客户端地址绝对路径,不写就不加。
(3)书写ui自动化脚本/或时间等待你手动操作手机
(4)写断言,因断言会触发异常,所以可以用try来捕获
try : assert_proxy(url,content)
except Exception as e:print(e)
其中url 为要锁定的url,必须是http/https开头,且若url带参数,只能填写?前面不带参数的部分哦~
其中content 为要断言的字符串,目前本框架只支持在url的参数和请求体中查询这个字符串是否存在,不存在会触发异常~
(5)调用关闭服务方法 stop_wqrfproxy()
(6)手机挂上代理 ,本机ip:8000
(7)执行脚本,注意看控制台输出的中英文提示
(8)执行后会自动打开一个抓包记录显示的页面,可无视关掉,或进行检查请求
(9)断言成功会打印中英文成功文案,失败会触发异常并输出中英文错误文案(找不到url或找到url但找不到预期字符串)
4. 环境:
目前仅支持python3 和 mac/linux 环境。windows和python2支持请关注后续更新
5. 普通线性脚本demo
代码语言:javascript复制# -*- coding:utf-8 -*-
import time
from wqrfproxy import *
start_wqrfproxy() #启动服务
time.sleep(30) #这行可以替换成实际的ui自动化脚本了
try:
#断言该url的请求参数中是否含有'埋点关键字'
assert_proxy('http://xx.xxx.com/xx','埋点关键字')
except Exception as e:
print(e) #打印出现的错误
stop_wqrfproxy() #最好关闭服务
6.在unittest中使用demo
代码语言:javascript复制# -*- coding:utf-8 -*-
import unittest
from wqrfproxy import *
class Test(unittest.TestCase):
@classmethod
def setUpClass(cls):
start_wqrfproxy() #书写启动服务函数
@classmethod
def tearDown(self):
stop_wqrfproxy() #书写关闭服务函数
def test_1(self):
driver.find_element_by_id('').click() #实际ui自动化脚本
#断言url的url参数和请求体中是否含有userId这个埋点关键字
assert_proxy('http://***.***.com/***/***','userId')
第一版,目前不支持windows还,不过过两天就支持了。最好用python3哦~