From 24807633f7a9a897eeb68d3f91178013c7f9e2d4 Mon Sep 17 00:00:00 2001 From: tomridder <1402709211@qq.com> Date: Tue, 12 May 2026 09:30:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E5=BF=AB=E6=89=8B?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E5=8F=91=E5=B8=83=E6=97=B6=E9=97=B4=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- uploader/ks_uploader/main.py | 38 ++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/uploader/ks_uploader/main.py b/uploader/ks_uploader/main.py index b0ff872..799ab09 100644 --- a/uploader/ks_uploader/main.py +++ b/uploader/ks_uploader/main.py @@ -314,15 +314,41 @@ class KSBaseUploader(BaseVideoUploader): async def set_schedule_time(self, page: Page, publish_date: datetime): kuaishou_logger.info(_msg("🕒", "小人准备设置定时发布时间")) - publish_date_hour = publish_date.strftime("%Y-%m-%d %H:%M:%S") - await page.locator("label:text('发布时间')").locator("xpath=following-sibling::div").locator(".ant-radio-input").nth(1).click() + publish_date_str = publish_date.strftime("%Y-%m-%d %H:%M:%S") + + # 1. 切换到"定时发布"radio (用文本匹配更稳) + await page.locator('label.ant-radio-wrapper').filter(has_text="定时发布").click() + await asyncio.sleep(2) + + # 2. 点击 picker 打开下拉面板 + await page.locator('input[placeholder="选择日期时间"]').click() await asyncio.sleep(1) - await page.locator('div.ant-picker-input input[placeholder="选择日期时间"]').click() + + # 3. 用 React 兼容的方式直接设置 input 的 value + # (ant-design DatePicker 是 controlled component, 必须用 native setter + bubbling event) + js_code = """ + (newValue) => { + const input = document.querySelector('input[placeholder="选择日期时间"]'); + if (!input) return false; + const nativeSetter = Object.getOwnPropertyDescriptor( + window.HTMLInputElement.prototype, 'value' + ).set; + nativeSetter.call(input, newValue); + input.dispatchEvent(new Event('input', { bubbles: true })); + input.dispatchEvent(new Event('change', { bubbles: true })); + return true; + } + """ + ok = await page.evaluate(js_code, publish_date_str) + if not ok: + kuaishou_logger.error("❌ 找不到时间选择器输入框") + return + await asyncio.sleep(1) - await page.keyboard.press("Control+KeyA") - await page.keyboard.type(publish_date_hour) + # 4. 按 Enter 确认 await page.keyboard.press("Enter") - await asyncio.sleep(1) + await asyncio.sleep(2) + kuaishou_logger.info(f"✅ 定时发布时间已设置为 {publish_date_str}") async def close_guide_overlay(self, page: Page) -> bool: joyride_tooltip = page.locator('div[id^="react-joyride-step"] div[role="alertdialog"]')