import pandas as pd #加载 pandas,读 Excel 必须用import pyautoguiimport timeimport keyboardimport datetime# =========================# 辅助函数:RGB转16进制# =========================def rgb2hex(r, g, b): return "{:02X}{:02X}{:02X}".format(r, g, b)# =========================# 读取 Excel# =========================print("读取 Excel 文件...")df = pd.read_excel(r"D:\按键精灵\更改包装描述.xlsx") #读取 Excel 并把数据放到 df 里面print("读取完成,共", len(df), "行")print("按 F10 开始脚本,F12 停止...")keyboard.wait("F10")print("脚本开始!")row = 0# =========================# 开始处理每一行# =========================while row < len(df): # 检查 F12 停止 if keyboard.is_pressed("F12"): print("检测到 F12,脚本停止") break # 读取表中的信息,转换为变量====sku_value, desc_value,ok_value sku_value = str(df.iloc[row]["SKU"]) desc_value = str(df.iloc[row]["描述"]) ok_value = str(df.iloc[row]["OK"]) # ===================== print("处理第", row, "行...") # =如果表格中标记了OK就不处理了==== if ok_value == "OK": print("已 OK,跳过") row += 1 continue # ===================== # ===================== # 第 1 步:点击 SKU 输入框(129,160)(所有第一步都是判断坐标的颜色是否一致,否则就一直等待) # ===================== while True: r,g,b = pyautogui.pixel(129,160) color_hex = rgb2hex(r,g,b) if color_hex == "FFFFFF": break print("SKU 输入框颜色不是 FFFFFF,等待中...") time.sleep(0.5) pyautogui.click(129,160) time.sleep(0.3) pyautogui.typewrite(sku_value, interval=0.05) #输入变量信息sku_value,并等待0.05秒 # ===================== # 第 2 步:点击搜索按钮(812,133)(所有第一步都是判断坐标的颜色是否一致,否则就一直等待) # ===================== while True: r,g,b = pyautogui.pixel(812,133) color_hex = rgb2hex(r,g,b) if color_hex == "FFFFFF": break print("搜索按钮颜色不是 FFFFFF,等待中...") time.sleep(0.5) pyautogui.click(812,133) time.sleep(0.5) # ===================== # 第 3 步:点击描述输入框(351,483)(所有第一步都是判断坐标的颜色是否一致,否则就一直等待) # ===================== while True: r,g,b = pyautogui.pixel(351,483) color_hex = rgb2hex(r,g,b) if color_hex == "FFFFFF": break print("描述输入框颜色不是 FFFFFF,等待中...") time.sleep(0.5) pyautogui.click(351,483) time.sleep(0.3) pyautogui.typewrite(desc_value, interval=0.05) #输入变量信息desc_value,并等待0.05秒 # ===================== # 第 4 步:键盘按回车 # ===================== pyautogui.press("enter") time.sleep(0.5) # ===================== # 第 5 步:点击应用按钮(907,507)(颜色判断 + 报错处理) # ===================== while True: # 获取按钮颜色 r,g,b = pyautogui.pixel(907,507) color_hex = rgb2hex(r,g,b) success_color = "FFFFFF" # 预期颜色 if color_hex == success_color: print("应用按钮点击成功,继续下一步") break # 成功,跳出循环 else: print("点击应用报错,按回车并重试...") # 第1步:按回车 pyautogui.press("enter") time.sleep(0.2) # 第2步:再点击按钮 pyautogui.click(907,509) # 报错备用坐标 time.sleep(0.5) # ===================== # 第 6 步:点击保存并重复按钮(661,642)(所有第一步都是判断坐标的颜色是否一致,否则就一直等待) # ===================== while True: r,g,b = pyautogui.pixel(661,642) color_hex = rgb2hex(r,g,b) if color_hex == "FFFFFF": break print("保存并重复按钮颜色不是 FFFFFF,等待中...") time.sleep(0.5) pyautogui.click(661,642) time.sleep(0.5) # ===================== # 第 7 步:标记 Excel # ===================== df.at[row, "OK"] = "OK" print("第", row, "行完成") row += 1# =====================# 第 8 步:保存结果# =====================# 使用时间戳防止覆盖文件名 = datetime.datetime.now().strftime(r"D:\按键精灵\处理结果_%Y%m%d_%H%M%S.xlsx")df.to_excel(文件名, index=False)print("脚本全部完成!已保存为", 文件名)