You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何缩短三星包更新自动化脚本的代码长度?

缩短三星包更新自动化脚本的几个实用方法

嘿,我仔细看了你的自动化脚本,确实有不少重复的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:56:21