Files
note2any/src/xiaohongshu/selectors.ts
2025-10-08 09:18:20 +08:00

68 lines
2.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 文件selectors.ts
* 功能:集中管理小红书发布流程相关 DOM 选择器。
*
* 来源用户提供的步骤截图STEP1 / STEP21 / STEP22 / STEP31
* 分组:入口 / 发布Tab / 视频 / 图文。
* 目标:统一引用、便于维护、减少硬编码分散。
*
* 改版策略建议:
* - 每个关键操作保留多个候选 selector后续可扩展为数组兜底
* - 可结合 querySelectorAll + 模糊匹配文本进一步增强稳健性。
*/
export const XHS_SELECTORS = {
// STEP 1 入口区域(选择发布类型)
ENTRY: {
PUBLISH_VIDEO_BUTTON: 'div.publish-video .btn',
VIDEO_CARD_IMAGE: 'div.group-list .publish-card:nth-child(1) .image',
IMAGE_CARD_IMAGE: 'div.group-list .publish-card:nth-child(2) .image'
},
// STEP 21 发布笔记 Tab 区域(主入口)
PUBLISH_TAB: {
PUBLISH_VIDEO_BUTTON: 'div.publish-video .btn', // 入口按钮(同上)
TAB_VIDEO: 'div.outarea.upload-c .creator-tab:nth-child(1)',
TAB_IMAGE: 'div.outarea.upload-c .creator-tab:nth-child(3)',
UPLOAD_BUTTON: 'div.outarea.upload-c .upload-content button'
},
// STEP 22 上传视频并发布
VIDEO: {
// 上传结果 / 封面区域
UPLOAD_SUCCESS_STAGE: '.cover-container .stage div:first-child', // 需检测包含文字“上传成功”
// 文本与输入区域
TITLE_INPUT: '.titleInput .d-text',
CONTENT_EDITOR: '#quillEditor.ql-editor',
TOPIC_BUTTON: '#topicBtn',
// 扩展功能(插件 / 位置等)
LOCATION_PLACEHOLDER: '.media-extension .plugin:nth-child(2) .d-select-placeholder',
LOCATION_DESCRIPTION: '.media-settings>div>div:nth-child(2) .d-select-description',
// 发布方式(立即 / 定时)
RADIO_IMMEDIATE: '.el-radio-group label:nth-child(1) input',
RADIO_SCHEDULE: '.el-radio-group label:nth-child(2) input',
SCHEDULE_TIME_INPUT: '.el-radio-group .date-picker input', // 例如2025-06-21 15:14
// 发布按钮
PUBLISH_BUTTON: '.publishBtn'
},
// STEP 31 上传图片(图文)并发布
IMAGE: {
IMAGE_UPLOAD_ENTRY: '.publish-c .media-area-new .img-upload-area .entry',
TITLE_INPUT: '.titleInput .d-text',
CONTENT_EDITOR: '#quillEditor .ql-editor',
TOPIC_BUTTON: '#topicBtn',
LOCATION_PLACEHOLDER: '.media-extension .plugin:nth-child(2) .d-select-placeholder',
LOCATION_DESCRIPTION: '.media-settings>div>div:nth-child(2) .d-select-description',
RADIO_IMMEDIATE: '.el-radio-group label:nth-child(1) input',
RADIO_SCHEDULE: '.el-radio-group label:nth-child(2) input',
SCHEDULE_TIME_INPUT: '.el-radio-group .date-picker input',
PUBLISH_BUTTON: '.publishBtn'
}
} as const;
export type XiaohongshuSelectorGroup = typeof XHS_SELECTORS;