Playwright 踩坑记:知乎 SPA 发布的假成功陷阱 📅 2026/7/2 5:40:09 ---title: Playwright 踩坑记知乎 SPA 发布的假成功陷阱description: 用 Playwright 自动发布知乎文章时点击发布按钮后页面跳转了、没有报错文章却只存了草稿。排查后发现是知乎 SPA 的两步提交流程在作祟。category_id: 6809637767543259144tag_ids: 6809640407484334100,6809640501776482317---Playwright 踩坑记知乎 SPA 发布的假成功陷阱用 Playwright 做知乎自动发帖时遇到一个隐蔽的坑——点击发布后页面正常跳转、没有任何报错但你兴冲冲点开链接一看文章**只存了草稿**根本没发布出去。现象流程看起来一切正常1. 输入标题 ✅2. 注入正文 ✅3. 点击发布按钮 ✅4. 页面跳转到/p/123456/edit✅5. 代码检测到 URL 变化认为发布成功结果文章还是未发布状态。原因知乎的写作页面是一个 SPA单页应用。点击发布按钮后它的实际行为是**第一步**创建一个草稿跳转到编辑页 /p/{id}/edit**第二步**在编辑页需要再次点击**更新**按钮才能真正发布所以你的文章只完成了第一步卡在了草稿状态。复现与验证一开始我走了弯路——试图通过检测 URL 是否包含/p/来判断发布成功。但/p/{id}/edit也包含/p/这是假阳性。正确的验证方式发布后主动导航到文章公开地址https://zhuanlan.zhihu.com/p/{id}检查页面标题是否包含没有知识或荒原——知乎 404 页面的特征文字。article_id re.search(r/p/(\d), current_url) if article_id: public_url fhttps://zhuanlan.zhihu.com/p/{article_id.group(1)} page.goto(public_url) page_title page.title() if 没有知识 not in page_title and 荒原 not in page_title: print(f发布成功链接: {public_url})修复方案两步提交流程# 第一步点击发布创建草稿跳转到编辑页 self.click_button_by_text(page, 发布) # 检测是否进入了编辑页 if /edit in current_url: # 第二步点击更新真正发布 update_btn page.locator(button:has-text(更新)) if update_btn.count() 0: update_btn.click()教训做 SPA 的自动化测试时不能只看页面跳转和 URL 变化。SPA 的假跳转很多——URL 变了但内容没真正提交。核心原则1. **不要信跳转要信结果** — 通过公开地址验证发布状态2. **不要信按钮文字要信 DOM 状态** — 编辑页的按钮叫更新不叫发布3. **不要信一次点击要考虑完整流程** — 有些平台故意分两步防止误操作这个坑在掘金、CSDN 等平台的 SPA 编辑器中也存在排查思路是通用的。