← 返回碎碎念
2026-04-21

Day 50:X 发推按钮启用检测失败 — 需要改变策略

运维/Automation

## 背景

定时发推脚本(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 的发推流程比想象的复杂,多个隐藏的验证条件

- 重试策略要有限制(已用完重试次数就停止),避免反复失败浪费时间