xpzouying/xiaohongshu-mcp · error
无法点击点赞: %w
Error message
无法点击点赞: %w
What it means
Like 找到点赞按钮后 humanize.Click 点击失败:按钮被遮挡、条目重渲染或鼠标事件被拦截,点赞动作没有送达页面。
Source
Thrown at xiaohongshu/notification_like.go:72
items, err := page.Elements(`.tabs-content-container > .container`)
if err != nil {
return nil, fmt.Errorf("未找到通知条目: %w", err)
}
if index >= len(items) {
return nil, fmt.Errorf("通知条目渲染数(%d)少于目标位置(%d),页面可能未加载完", len(items), index)
}
humanize.Delay(ctx, humanize.Reading)
btn, err := items[index].Element(`.action-like .like-wrapper`)
if err != nil {
return nil, fmt.Errorf("该通知没有点赞入口(评论可能已删除或不可点赞): %w", err)
}
humanize.Delay(ctx, humanize.BeforeClick)
if err := humanize.Click(btn); err != nil {
return nil, fmt.Errorf("无法点击点赞: %w", err)
}
if err := n.waitLikeSettled(page, commentID, want); err != nil {
return nil, err
}
humanize.Delay(ctx, humanize.AfterInteract)
logrus.Infof("通知点赞成功: comment=%s liked=%v", commentID, want)
return result, nil
}
// waitLikeSettled 等待点赞状态变成目标值;判不出来直接报错,不自动重试。
func (n *NotificationAction) waitLikeSettled(page *rod.Page, commentID string, want bool) error {
if n.likedMatches(page, commentID, want, likeSettleTimeout) {
return nil
}
return fmt.Errorf("点赞未确认成功:%s 内状态未变成 %v。点赞可能已生效但同步慢,"+View on GitHub (pinned to 332d196854)
Solutions
- 重试整个 Like 操作(重新定位元素后再点)
- 点击前检查弹层并关闭遮挡元素
- 减小/调整 BeforeClick 延迟,或点击前重新获取元素引用
- 若频繁失败,检查页面是否触发风控验证
Example fix
// before
if err := humanize.Click(btn); err != nil { return nil, fmt.Errorf("无法点击点赞: %w", err) }
// after
if err := humanize.Click(btn); err != nil {
btn, err = items[index].Element(`.action-like .like-wrapper`) // 重新获取
if err == nil { err = humanize.Click(btn) }
if err != nil { return nil, fmt.Errorf("无法点击点赞: %w", err) }
} Defensive patterns
Strategy: retry
Try / catch
_, err := n.Like(ctx, commentID, false)
if err != nil && strings.Contains(err.Error(), "无法点击点赞") {
time.Sleep(time.Second) // 等渲染稳定后重试
_, err = n.Like(ctx, commentID, false)
} Prevention
- 点击前关闭可能遮挡的弹层
- 保持拟人化延迟适中,避免延迟期间页面重渲染
- 频繁失败时检查是否触发风控验证
- 重试时重新获取元素引用而非复用旧节点
When it happens
Trigger: Like 中对 btn 调用 humanize.Click 出错:页面在 BeforeClick 延迟期间发生重渲染,按钮被替换;元素滚出视口;页面被弹层遮挡。
Common situations: 列表在延迟期间刷新导致元素失效;动画未完成元素不可点;页面弹出登录/验证弹层。
Related errors
- 落点 (%.0f,%.0f) 在视口 %.0fx%.0f 之外
- 读取通知列表失败: %w
- 页面状态里没有分区 %s,可能未登录或页面结构已变化
- 未找到通知条目: %w
- 通知条目渲染数(%d)少于目标位置(%d),页面可能未加载完
AI-assisted analysis of xpzouying/xiaohongshu-mcp@332d196854 (2026-09-05).
Data as JSON: /api/errors/86d9d54b84c794c2.
Report an issue: GitHub.