From 37e0f66b8dc24d89da710e451c55c6b7c551bfe1 Mon Sep 17 00:00:00 2001 From: Hommy <16620803786@163.com> Date: Sun, 22 Mar 2026 19:51:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=91=E6=B8=B2=E6=9F=93?= =?UTF-8?q?=E7=9A=84=E7=A8=B3=E5=AE=9A=E6=80=A7=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pyJianYingDraft/jianying_controller.py | 40 +++++++++++++++------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/src/pyJianYingDraft/jianying_controller.py b/src/pyJianYingDraft/jianying_controller.py index e0e5d93..c8861ed 100644 --- a/src/pyJianYingDraft/jianying_controller.py +++ b/src/pyJianYingDraft/jianying_controller.py @@ -77,27 +77,41 @@ class JianyingController: """初始化剪映控制器, 此时剪映应该处于目录页""" self.get_window() - def find_and_click_draft(self, draft_name: str) -> None: + def find_and_click_draft(self, draft_name: str, max_retries: int = 5, retry_interval: float = 5.0) -> None: """查找并点击指定名称的草稿 Args: draft_name (str): 要查找的草稿名称 + max_retries (int): 最大重试次数,默认5次 + retry_interval (float): 重试间隔时间(秒),默认5秒 Raises: DraftNotFound: 未找到指定名称的剪映草稿 """ - # 点击对应草稿 - draft_name_text = self.app.TextControl( - searchDepth=2, - Compare=ControlFinder.desc_matcher(f"HomePageDraftTitle:{draft_name}", exact=True) - ) - if not draft_name_text.Exists(0): - raise exceptions.DraftNotFound(f"未找到名为{draft_name}的剪映草稿") - draft_btn = draft_name_text.GetParentControl() - assert draft_btn is not None - draft_btn.Click(simulateMove=False) - time.sleep(10) - self.get_window() + last_exception = None + for attempt in range(max_retries): + try: + # 点击对应草稿 + draft_name_text = self.app.TextControl( + searchDepth=2, + Compare=ControlFinder.desc_matcher(f"HomePageDraftTitle:{draft_name}", exact=True) + ) + if not draft_name_text.Exists(0): + raise exceptions.DraftNotFound(f"未找到名为{draft_name}的剪映草稿") + draft_btn = draft_name_text.GetParentControl() + assert draft_btn is not None + draft_btn.Click(simulateMove=False) + time.sleep(10) + self.get_window() + return # 成功则返回 + except exceptions.DraftNotFound as e: + last_exception = e + if attempt < max_retries - 1: + logger.info(f"未找到名为{draft_name}的剪映草稿,第{attempt + 1}次重试...") + time.sleep(retry_interval) + + # 所有重试都失败,抛出异常 + raise last_exception def click_export_button(self) -> None: """点击编辑页面的导出按钮