用 Playwright 给 WPS 社区做个定时发帖工具,附踩坑记录

Mr Chen
Mr Chen WPS资深用户Lv.3 优质创作者KVPWPS产品体验官WPS寻令官

Lv.3 优质创作者

这是一篇由 Playwright 自动化工具生成的测试内容,用于验证发帖流程是否正常。工具支持定时发帖、话题标签、圈子选择与配图上传。本篇为试运行预览,不会真正发布。带话题 #社区共创实验室。

继续分享社区共创实验室的成果。这次重点说两个工程细节:登录态复用和失败兜底。

【登录态复用】

Playwright 的 storageState 可以把整个浏览器上下文(cookie + localStorage)序列化成 JSON。我的工具首次登录后存到 state.json,后续发帖时 newContext({ storageState }) 直接加载。

好处:

  • 不存账号密码,安全;试正文内容,用于激活大家好,这周参加了「社区共创实验室」第 1 期活动,主题是做一个能在 WPS 社区定时发帖的工具。我把开发过程和几个关键踩坑点整理出来,给同样想动手的同学参考。

  • 一、为什么选 Playwright 而不是直接调接口

  • WPS 社区底层是 Discuz 改造的,但登录走的是 WPS 账号体系(account.wps.cn),默认扫码登录,还带富文本编辑器和话题选择。我一开始想用传统的 formhash + cookie 方式直接 POST,结果发现:

  1. 登录态不是标准 Discuz 的 cookie,而是 WPS 账号体系的 token;

  1. 2. 正文是富文本,纯文本提交会丢格式;

  1. 3. 有反自动化检测,纯 HTTP 请求容易被拦。

  1. 最后改用 Playwright 跑真实浏览器,模拟人工点击、输入,成功率从不到 30% 提到接近 100%。

  1. 二、登录态持久化是关键

  1. 每次发帖都重新扫码不现实。我的做法是:首次用有头浏览器手动登录一次,把 storageState 存成 state.json,之后每次发帖复用这个文件。这样既不用存账号密码,登录态过期了再跑一次 login 命令就行。

  1. 三、定时调度

  1. 用 Node 内置的 setTimeout + 系统时区(Asia/Shanghai)做调度,支持指定日期时间。也支持多任务排期,可以一次排好几篇。

  1. 四、实测结果

  1. 工具已经成功发出真实帖子,内容正常、可读、带 #社区共创实验室 话题。代码和使用说明都开源了,欢迎复用。

  1. 如果你也在做类似工具,欢迎在评论区交流~继续分享社区共创实验室的成果。这次重点说两个工程细节:登录态复用和失败兜底。

  • 【登录态复用】

  • Playwright 的 storageState 可以把整个浏览器上下文(cookie + localStorage)序列化成 JSON。我的工具首次登录后存到 state.json,后续发帖时 newContext({ storageState }) 直接加载。

  • 好处:

  • - 不存账号密码,安全;

  • - 登录态过期了重新 login 一次即可;

  • - 多次发帖共享同一登录态,效率高。

  • 检测登录态是否有效:访问首页看有没有"点击登录"按钮,有就是过期了。

  • 【失败兜底】

  • 发帖可能失败的场景:登录态过期、网络超时、编辑器没加载出来、发布按钮没点到。

  • 我的处理:

  1. 每个关键步骤都 try-catch,失败不中断整个流程而是记录;

  1. 2. 失败时自动截图到 shots/ 目录,方便事后排查;

  1. 3. 返回结构化结果 { success, error, url },调度器据此决定是否重试;

  1. 4. 试运行模式(dryRun):填完内容只截图不点发布,方便预览。

  1. 【实测】

  1. 工具已成功发出真实帖子,内容完整、带 #社区共创实验室 话题。可复现,附使用说明。

  1. 做工具的过程比结果更有意思,推荐大家也参加共创实验室。话题输入。

  • - 登录态过期了重新 login 一次即可;

  • - 多次发帖共享同一登录态,效率高。

  • 检测登录态是否有效:访问首页看有没有"点击登录"按钮,有就是过期了。

  • 【失败兜底】

  • 发帖可能失败的场景:登录态过期、网络超时、编辑器没加载出来、发布按钮没点到。

  • 我的处理:

  1. 每个关键步骤都 try-catch,失败不中断整个流程而是记录;

  1. 2. 失败时自动截图到 shots/ 目录,方便事后排查;

  1. 3. 返回结构化结果 { success, error, url },调度器据此决定是否重试;

  1. 4. 试运行模式(dryRun):填完内容只截图不点发布,方便预览。

  1. 【实测】

  1. 工具已成功发出真实帖子,内容完整、带 #社区共创实验室 话题。可复现,附使用说明。

  1. 做工具的过程比结果更有意思,推荐大家也参加共创实验室。

甘肃省
浏览 65
收藏
3
分享
3 +1
+1
全部评论