fix(tencent): poll delayed publish entry

This commit is contained in:
tankztz
2026-08-07 17:04:43 +08:00
parent 2dfae17775
commit 8ee7bcdb8a
+21 -18
View File
@@ -568,26 +568,29 @@ class TencentBaseUploader(BaseVideoUploader):
return None return None
fi = await find_file_input() fi = await find_file_input()
if fi is None: clicked_publish = False
# 新版视频号助手先落在首页;必须点击唯一可见的「发表视频」按钮, for _ in range(60):
# 路由切到 /platform/post/create 后上传 input 才会挂载。 if fi is not None:
publish_buttons = page.get_by_role("button", name="发表视频", exact=True) break
clicked_publish = False if not clicked_publish:
for index in range(await publish_buttons.count()): # 新版视频号助手可能先落在首页,且「发表视频」按钮异步出现。
candidate = publish_buttons.nth(index) # 持续轮询所有可访问 button;Patchright 在当前页面上按名称精确匹配不稳定。
if await candidate.is_visible():
await candidate.click(force=True)
clicked_publish = True
break
if clicked_publish:
try: try:
await page.wait_for_url("**/platform/post/create", timeout=30000) publish_buttons = await page.get_by_role("button").all()
except Exception: except Exception:
pass publish_buttons = []
for _ in range(45): for candidate in publish_buttons:
fi = await find_file_input() try:
if fi is not None: button_text = (await candidate.inner_text()).strip()
break is_visible = await candidate.is_visible()
except Exception:
continue
if "发表视频" in button_text and is_visible:
await candidate.click(force=True)
clicked_publish = True
break
fi = await find_file_input()
if fi is None:
await asyncio.sleep(1) await asyncio.sleep(1)
if fi is None: if fi is None:
raise RuntimeError("未找到视频号文件上传框") raise RuntimeError("未找到视频号文件上传框")