福州网站建设多少钱广州网站优化页面
操作说明
环境依赖
- 有python
- 有pyautogui
# 安装pyautogui命令 pip3 install pyautogui
警告
- 仅在windows进行了测试
- 两次连续的单击左键会变成双击左键
因为使用了pyautogui内部默认的延时 - 若不支持pyautogui,不提供解决方案
运行示例
示例一:执行5次点击左键
示例二:先点击左键,再点击右键(执行5次)
运行流程
流程
- 解析参数
- 生成鼠标操作列表
- 生成鼠标点击的位置列表
- 开始执行点击命令
主函数
def main():"""主函数"""try:args = ArgParse() # 解析参数clickList = GetClickList(args.num) # 生成鼠标操作列表positionList = GetPositionList(args.num) if args.move else None # 生成鼠标点击的位置列表RunClick(clickList, positionList, args.repeat) # 开始执行点击命令except Exception as e:print(f'Error: {e}')
功能模块
参数解析
解析输入参数,支持的命令有:
- 配置单次运行执行的鼠标操作数量:-n或–num后跟数字
- 配置重复运行的次数:-r或–repeat后跟数字
- 配置是否需要移动鼠标:-m或–move, 默认不移动,加了之后移动
def ArgParse():"""命令行参数解析"""import argparseparser = argparse.ArgumentParser(description='Click mouse')parser.add_argument('-n', '--num', type=int, help='Number of click commands')parser.add_argument('-r', '--repeat', type=int, help='Number of repeat times')parser.add_argument('-m', '--move', action='store_true', default=False, help='Move mouse to position before clicking')args = parser.parse_args()# 参数校验if args.num is None or args.num <= 0:raise ValueError('Invalid or missing click command number (--num)')if args.repeat is None or args.repeat <= 0:raise ValueError('Invalid or missing repeat times (--repeat)')return args
生成鼠标操作列表
依次输入执行的鼠标操作,输入错误则重新输入
def GetClickList(num):"""获取点击命令列表"""print('Select your clock command:')print('1: click left')print('2: click left double')print('3: click right')clickOption = {1: pyautogui.click,2: pyautogui.doubleClick,3: pyautogui.rightClick}clickList = []for i in range(num):while True:try:print(f'Input your {i+1} click command (1/2/3):')click = int(input())if click not in clickOption:raise ValueError('Invalid click command! Please input 1, 2, or 3.')clickList.append(clickOption[click])breakexcept ValueError as e:print(f'Error: {e}')return clickList
生成鼠标点击的位置列表
当配置了需要鼠标移动时,生成点击位置列表。每按一次回车,获取一个位置。
def GetPositionList(num):"""获取点击位置列表"""positionList = []for i in range(num):print(f'Get your {i+1} click position: Press Enter to capture the current mouse position.')input()x, y = pyautogui.position()positionList.append((x, y))return positionList
开始点击
def RunClick(clickList, positionList, repeat):"""运行点击命令"""for i in range(repeat):for j in range(len(clickList)):if positionList is not None:pyautogui.moveTo(positionList[j][0], positionList[j][1])clickList[j]() # 执行点击命令print(f'Run {i+1}/{repeat} times')