xpzouying/xiaohongshu-mcp · error

切换到分区 %s 失败: %w

Error message

切换到分区 %s 失败: %w

What it means

switchTab 已遍历找到目标分区标签(如「赞和收藏」)并执行 humanize.Click,但点击失败:标签被遮挡、页面重渲染或鼠标事件被拦截,导致未能切换到目标通知分区。

Source

Thrown at xiaohongshu/notification.go:190

func (n *NotificationAction) switchTab(ctx context.Context, page *rod.Page, tab NotificationTab) error {
	if tab == TabMentions {
		return nil
	}

	label := tabLabels[tab]
	elems, err := page.Elements(`.reds-tab-item`)
	if err != nil {
		return fmt.Errorf("未找到通知分区标签: %w", err)
	}

	for _, elem := range elems {
		text, err := elem.Text()
		if err != nil || strings.TrimSpace(text) != label {
			continue
		}
		humanize.Delay(ctx, humanize.BeforeClick)
		if err := humanize.Click(elem); err != nil {
			return fmt.Errorf("切换到分区 %s 失败: %w", label, err)
		}
		humanize.Delay(ctx, humanize.AfterClick)
		return nil
	}
	return fmt.Errorf("未找到分区标签 %q", label)
}

// loadUntil 滚动加载,直到条目数够用或没有更多。
func (n *NotificationAction) loadUntil(ctx context.Context, page *rod.Page, tab NotificationTab, limit int) error {
	const maxRounds = 20

	for range maxRounds {
		payload, err := n.readTab(page, tab)
		if err != nil {
			return err
		}
		loaded := len(payload.MessageList)
		if loaded >= limit || !payload.HasMore {

View on GitHub (pinned to 332d196854)

Solutions

  1. 稍后重试切换
  2. 滚动确保标签可见后再点击
  3. 检查是否有弹层遮挡通知页
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at xiaohongshu/notification.go:190 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of xpzouying/xiaohongshu-mcp@332d196854 (2026-09-05). Data as JSON: /api/errors/8844ee40251f3ab3. Report an issue: GitHub.