分享一个埋点自动化框架wqrfproxy

2022-05-19 13:07:46 浏览数 (1)

最近搞了一套埋点自动化框架,虽然第一版不太完美,但是更新还是很效率的。

应用场景:

嵌入到任何移动端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哦~

0 人点赞