1:通过 Charles 抓包,然后导出为 har 格式文件(也可以直接修改为 json 后缀)。
2:通过 json 库(或其他操作 json 的库)读取对应的请求参数,如 json['data']['request']['params'],提取参数后做对应修改(如根据请求字段生成不同的参数)。
3:设定请求模板,如 request.get(url,params,data),填充对应的参数。
直接通过 adb shell getevent -l 获取的坐标测试发现有的手机坐标不对(12、13 系统的手机会存在此问题),得通过 adb 命令换算一下,拿到换算的值再乘以 adb shell getevent -l 返回的坐标
def get_click_point_value():
# 判断系统类型,执行不同的命令
sys = get_user_platform()
if sys:
device_info_w = subprocess.Popen('adb shell getevent -p | findstr "0035"', shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
max_w = re.compile(r'\d+').findall(str(device_info_w.communicate()[0]))[3]
device_info_w = subprocess.Popen('adb shell getevent -p | findstr "0036"', shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
max_h = re.compile(r'\d+').findall(str(device_info_w.communicate()[0]))[3]
else:
device_info = subprocess.Popen('adb shell getevent -p | grep -e "0035" -e "0036"', shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
max_w = re.compile(r'\d+').findall(str(device_info.communicate()[0]))[3]
max_h = re.compile(r'\d+').findall(str(device_info.communicate()[0]))[10]
device_wm_info = subprocess.run('adb shell wm size', shell=True, capture_output=True)
wm_list = device_wm_info.stdout.decode().split("x")
width = wm_list[0].split(":")[1]
height = wm_list[1].replace("\n", "")
rateW = round(int(width) / int(max_w), 2)
rateH = round(int(height) / int(max_h), 2)
return rateW, rateH
def get_user_platform():
sys = platform.system()
if (sys == "Windows"):
return True
else:
return False
前几天还买了虫洞的 VIP,后来发现自己的 MAC 系统是 12,正好用不了,测试机连接不上自己的 MAC,尴尬了