如何缩短三星包更新自动化脚本的代码长度?
缩短三星包更新自动化脚本的几个实用方法
嘿,我仔细看了你的自动化脚本,确实有不少重复的GUI操作和硬编码的数值,咱们可以从以下几个方向来精简代码,同时还能提升后续的可维护性:
1. 封装重复的GUI操作成通用函数
你脚本里大量重复了「移动坐标→点击→打印提示→等待」的流程,把这些逻辑封装成一个函数,能瞬间减少大量重复代码。比如:
def gui_operation(x, y, duration=1.0, clicks=1, message="", wait_time=0): gui.moveTo(x=x, y=y, duration=duration) gui.click(clicks=clicks) if message: print(message) if wait_time > 0: time.sleep(wait_time)
这样原来的多行操作,现在只需要一行函数调用就能搞定。
2. 用常量管理固定数值
把脚本里的所有坐标、等待时长这些「魔法数字」定义成常量,不仅能缩短代码里的重复书写,后续要调整坐标时也不用到处找:
# 坐标常量 MODEL_NAME_POS = (1016, 701) UPDATE_VERSION_POS = (661, 526) SAVE_BUTTON_POS = (1155, 800) DOCUMENTS_FOLDER_POS = (675, 370) TODAY_FOLDER_POS = (885, 356) WINDOWS_VERSION_FOLDER_POS = (881, 378) CONFIRM_SAVE_POS = (1315, 738) CLOSE_POPUP_POS1 = (1178, 637) CLOSE_POPUP_POS2 = (1260, 798) BACK_TO_MAIN_POS = (618, 393) # 等待时长常量 NAV_WAIT = 15 SHORT_WAIT = 2 DOWNLOAD_WAIT = 240
3. 简化重复的双击操作
你原来的两段重复双击代码可以直接合并成更简洁的调用(如果业务确实需要两次双击,也可以用两次函数调用替代重复的move+click):
# 原来的冗余代码 gui.moveTo(x=885, y=356, duration=1.5) gui.click(clicks=2) gui.moveTo(x=885, y=356, duration=1.5) gui.click(clicks=2) # 简化后 gui_operation(*TODAY_FOLDER_POS, duration=1.5, clicks=2, wait_time=SHORT_WAIT) gui_operation(*TODAY_FOLDER_POS, duration=1.5, clicks=2, wait_time=SHORT_WAIT)
整合后的完整脚本
把上面的方法整合后,你的脚本会精简很多,逻辑也更清晰:
import gui import time # 定义常量 MODEL_NAME_POS = (1016, 701) UPDATE_VERSION_POS = (661, 526) SAVE_BUTTON_POS = (1155, 800) DOCUMENTS_FOLDER_POS = (675, 370) TODAY_FOLDER_POS = (885, 356) WINDOWS_VERSION_FOLDER_POS = (881, 378) CONFIRM_SAVE_POS = (1315, 738) CLOSE_POPUP_POS1 = (1178, 637) CLOSE_POPUP_POS2 = (1260, 798) BACK_TO_MAIN_POS = (618, 393) NAV_WAIT = 15 SHORT_WAIT = 2 DOWNLOAD_WAIT = 240 def gui_operation(x, y, duration=1.0, clicks=1, message="", wait_time=0): gui.moveTo(x=x, y=y, duration=duration) gui.click(clicks=clicks) if message: print(message) if wait_time > 0: time.sleep(wait_time) def package1(): try: gui_operation(*MODEL_NAME_POS, message="Navigating to Package", wait_time=NAV_WAIT) gui_operation(*UPDATE_VERSION_POS, message="Navigating to Update version", wait_time=NAV_WAIT) gui_operation(*SAVE_BUTTON_POS, message="Save setup popup", wait_time=5) gui_operation(*DOCUMENTS_FOLDER_POS, message="Navigating to Documents", wait_time=SHORT_WAIT) gui_operation(*TODAY_FOLDER_POS, duration=1.5, clicks=2, wait_time=SHORT_WAIT) gui_operation(*TODAY_FOLDER_POS, duration=1.5, clicks=2, wait_time=SHORT_WAIT) gui_operation(*WINDOWS_VERSION_FOLDER_POS) gui_operation(*CONFIRM_SAVE_POS, message="Downloading package...", wait_time=DOWNLOAD_WAIT) print("Package finished downloading, check for errors") gui_operation(*CLOSE_POPUP_POS1) gui_operation(*CLOSE_POPUP_POS2) gui_operation(*BACK_TO_MAIN_POS) except KeyboardInterrupt: print("Program stopped..")
这样调整后,代码行数大幅减少,而且后续要修改坐标、等待时间时,只需要改动常量部分即可,不用在重复代码里逐一查找修改。
内容的提问来源于stack exchange,提问作者Hilde Schneider
相关产品推荐
相关产品推荐

