痛点:一个接口十几个甚至几十个业务字段 使用postman进行测试,或者写接口文档时,在填写这些字段名时就要耗费很久并且很弱智的复制粘贴
解决方法:使用 pyautogui工具 省去重复性工作
平台:macbook pro 16-inch
注意点:
效果图如下:
postman如下(为了图片大小限制,有些模糊):
接口文档(用的 https://kl3s.w.eolinker.com/ ) 变量名 效果图(因为动图过大,改为只循环一次,请刷新查看):
接口文档 参数的说明 效果图(因为动图过大,改为只循环一次,请刷新查看):
安装方式:
pip install pyautogui
脚本如下:
# -*- coding: utf-8 -*-
"""
All rights reserved
create time '2020/4/28 14:56'
Module usage:
注意点:输入法为英文
"""
import time
import pyautogui
import pyperclip
pyautogui.FAILSAFE = True
# 函数每次执行后暂停的时间,因为可能存在 程序的变化(如postman)跟不上函数的执行速度 出现问题
pyautogui.PAUSE = 0.1
def get_mouse_position():
while True:
mouse_x, mouse_y = pyautogui.position()
print(mouse_x, mouse_y)
time.sleep(1)
def check_chinese(_str):
"""
检查是否存在中文
:param _str:
:return:
"""
import re
RE = re.compile(u'[\u4e00-\u9fa5]', re.UNICODE)
match = re.search(RE, _str)
if match is None:
pyautogui.typewrite(message=f'{_str}')
else:
paste(_str)
def paste(_str):
"""
对于中文进行 复制粘贴
:param _str:
:return:
"""
pyperclip.copy(_str)
pyautogui.hotkey('command', 'v')
def str2list(_str):
"""
字符串转为list
:param _str:
:return:
"""
return _str.split(' ')
def postman_fill(_str):
'''
postman输入 http请求 body 参数名
:param _str:
:return:
'''
# 获取需要输入的str list
_list = str2list(_str)
# 鼠标移动到指定位置并左击
pyautogui.click(320, 376, button='left', duration=0.1)
pyautogui.click(button='left')
for item in _list:
print(f'输入:{item}')
check_chinese(item)
for tab_item in range(3):
pyautogui.press('tab')
def api_doc_val_name_fill(_str):
'''
api文档输入参数名
:param _str:
:return:
'''
# 获取需要输入的str list
_list = str2list(_str)
# 鼠标移动到指定位置并左击
pyautogui.click(376, 906, button='left', duration=0.1)
pyautogui.click(button='left')
for item in _list:
print(f'输入:{item}')
check_chinese(item)
for tab_item in range(7):
pyautogui.press('tab')
def api_doc_val_note_fill(_str):
'''
api文档输入参数的说明
:param _str:
:return:
'''
# 获取需要输入的str list
_list = str2list(_str)
# 鼠标移动到指定位置并左击
pyautogui.click(1061, 906, button='left', duration=0.1)
pyautogui.click(button='left')
for item in _list:
print(f'输入:{item}')
check_chinese(item)
for tab_item in range(7):
pyautogui.press('tab')
if __name__ == '__main__':
# postman输入 http请求 body 参数名
postman_fill('a b c 你好 d')
# api文档输入参数名
# api_doc_val_name_fill('a b c')
# api文档输入参数的说明
# api_doc_val_note_fill('a1 b1 c1')
# 获取鼠标当前位置
# get_mouse_position()
相关链接:
https://github.com/asweigart/pyautogui