update at 2025-10-08 09:18:20

This commit is contained in:
douboer
2025-10-08 09:18:20 +08:00
parent a49e389fe2
commit 584d4151fc
67 changed files with 5363 additions and 892 deletions

View File

@@ -0,0 +1,68 @@
/**
* 文件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;