首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >WorkBuddy自动化实战

WorkBuddy自动化实战

原创
作者头像
用户12554130
发布2026-06-11 19:49:54
发布2026-06-11 19:49:54
80
举报

让 WorkBuddy 自己给自己签到?一个"偷懒"程序员的自动化翻车实录

—— 以及一些可能对你有用的 Windows 自动化经验

先说结论:签到功能已经下线了(5月10号),所以这篇文章的原始动机已经没了�� 但是整个折腾过程还是挺有价值的,如果你也想在 Windows 上搞点自动化,可以参考下我的经验。

起因很简单——懒。每天打开 WorkBuddy 第一件事就是签到领积分,但经常忘。出差忘了、开会忘了、睡过头更忘了。然后某天突然灵光一闪:WorkBuddy 本身就能写代码跑脚本啊,我让它自己签不就完了?

第一次尝试:UI Automation(寄)

一开始想走"正经"路线,用 Windows UI Automation API 直接找到按钮控件再模拟点击。理论上这方案最优雅——不管窗口挪到哪,控件名不变就能找到。

然后报错了:

'tuple' object has no attribute 'Name'

折腾了半天发现是 Electron 应用的问题,控件树结构不稳定,有些控件压根拿不到。WorkBuddy 是 Electron 架构的,所以这条路上基本走不通。

结论:Electron 应用别用 UI Automation,浪费时间。

第二次尝试:坐标点击(能跑但有坑)

既然找不到控件,那就简单粗暴——直接算坐标。PyAutoGUI 模拟鼠标点击指定位置,思路就是:

1. 找到 WorkBuddy 窗口在哪(左上角坐标)

2. 算出按钮在屏幕上的绝对位置

3. 点它!

核心代码就几行:

import pyautogui import win32gui hwnd = win32gui.FindWindow(None, "WorkBuddy") left, top, right, bottom = win32gui.GetWindowRect(hwnd) # 按钮相对窗口的偏移 + 窗口位置 = 绝对坐标 pyautogui.click(left + 40, top + 781)

大坑来了:窗口位置会变!

上线第二天就出事了。看日志发现窗口位置从 (0,15) 变成了 (338,0),所有坐标全偏了,点了个寂寞。

解决方法倒是简单:每次执行前都重新获取窗口位置,动态算坐标。这样窗口爱飘哪飘哪,我都能追着点。

但这也暴露了坐标点击方案的致命弱点——太脆弱了。窗口大小变了、分辨率调了、DPI缩放改了,全得重新算。

配上定时任务,每天自动跑

脚本写好了,总不能每天手动跑吧。用 Windows 任务计划程序设个定时任务:

schtasks /create /tn "WorkBuddyCheckin" /tr "python C:\Users\xxx\checkin.py" /sc daily /st 08:00 /f

这里也有个坑:定时任务默认用 SYSTEM 用户跑,没有桌面权限,PyAutoGUI 根本点不动。必须改成"只在用户登录时运行"才行。

加了日志和截图,至少知道自己怎么死的

每一步都记日志、存截图。这样即使签到没成功,至少能从日志里看出是哪一步挂了。

[2026-06-11 08:21] 窗口位置: (338, 0) [2026-06-11 08:21] 步骤1: 点击头像 @ (378, 767) ✅ [2026-06-11 08:21] 步骤2: 点击积分按钮 @ (428, 677) ✅ [2026-06-11 08:21] 步骤3: 确认弹窗 @ (825, 411) ✅ [2026-06-11 08:21] 截图: checkin_debug_082136.png [2026-06-11 08:21] ✅ 签到操作完成

踩坑总结

❌ Electron 应用别用 UI Automation — 控件树不稳定,换个方案吧

❌ 坐标不能硬编码 — 窗口位置随时变,每次都要动态获取

❌ 定时任务要选"用户登录时运行" — 不然没有桌面权限,点不动

❌ 截图存了也白存 — 当前没法自动验证截图内容,得人工看(希望以后能加OCR验证)

❌ 签到功能5月10号下线了 — 所以这个脚本……已经没用了 ��

但是!这套方案本身是通用的

把签到逻辑换掉,就能做别的自动化:

• 每日数据报表自动生成

• 定时检查网页内容变化

• 自动备份指定文件夹

• 定时发邮件提醒

• 批量截图存档

模板要点: win32gui 定位窗口 → 动态算坐标 → pyautogui 模拟操作 → 每步加延时 → 截图存证 → 写日志 → schtasks 定时跑。

总之,自动化这个东西,"能用"比"优雅"重要。第一版翻车就换方案,硬编码不稳就改动态计算,一步步迭代出来的。虽然最后签到功能下线了,但过程中积累的经验——动态坐标、日志系统、定时任务配置——都是实打实可复用的。

希望这篇能帮到同样想偷懒的你 ��

#WorkBuddy# #自动化# #Python# #Windows定时任务#

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档