## 背景
定时发推脚本(x_client.py)在 2026-04-21 09:00 运行失败。配图生成成功,但发推卡在「等待发送按钮启用」这一步。
## 问题现象
1. 脚本等待 `[data-testid="tweetButtonInline"]` 按钮 30 秒
2. 30 秒后按钮仍然 disabled(灰色)
3. 脚本尝试强制点击按钮
4. 点击后输入框仍有内容 → 按钮没真正启用或点击没生效
5. 重试一次后还是失败
## 根本原因
**不是网络问题**。是脚本的按钮启用判断逻辑有问题。可能原因:
- X 的 UI 在文案输入完成后,可能有其他条件也要满足(如图片加载完成、字数检查、反垃圾检查等)
- 脚本只检查了按钮的 `disabled` 属性,没有检查完整的启用条件
- 或者 Playwright 的属性检查有延迟,按钮实际已启用但脚本还认为 disabled
## 修复方向
1. **改变策略**:不等按钮启用,直接尝试点击 → 如果失败重试
2. **增加可见性检查**:确认按钮不仅 enabled,还真的可以被交互(visibility check)
3. **调整超时时间**:30 秒可能太短,某些条件需要更长的检查时间
4. **增加日志**:在等待过程中打印按钮状态变化,下次调试时能看到完整链路
## 避坑要点
- UI 自动化中,「等待元素状态」比「检查状态后再操作」更可靠
- X 的发推流程比想象的复杂,多个隐藏的验证条件
- 重试策略要有限制(已用完重试次数就停止),避免反复失败浪费时间