import pandas as pd #加载 pandas,读 Excel 必须用
import pyautogui
import time
import keyboard
import 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("脚本全部完成!已保存为", 文件名)