diff --git a/services/kdocs_uploader.py b/services/kdocs_uploader.py index 5d83295..b4d31a1 100644 --- a/services/kdocs_uploader.py +++ b/services/kdocs_uploader.py @@ -255,6 +255,7 @@ class KDocsUploader: for page in pages: if self._try_click_names(page, wechat_names): return + self._try_confirm_login() def _capture_qr_image(self) -> Optional[bytes]: pages = self._iter_pages() @@ -396,6 +397,14 @@ class KDocsUploader: return True except Exception: pass + try: + el = page.get_by_text(name, exact=False) + if el.is_visible(timeout=1200): + el.click() + time.sleep(1) + return True + except Exception: + pass try: for frame in page.frames: for name in names: @@ -415,10 +424,26 @@ class KDocsUploader: return True except Exception: pass + try: + el = frame.get_by_text(name, exact=False) + if el.is_visible(timeout=800): + el.click() + time.sleep(1) + return True + except Exception: + pass except Exception: return False return False + def _try_confirm_login(self) -> bool: + confirm_names = ["确认登录", "确认登陆"] + pages = self._iter_pages() + for page in pages: + if self._try_click_names(page, confirm_names): + return True + return False + def _capture_dialog_image(self, page) -> Optional[bytes]: selectors = ( "[role='dialog'], .dialog, .modal, .popup, " @@ -547,6 +572,8 @@ class KDocsUploader: return {"success": False, "logged_in": False, "error": self._last_error or "浏览器不可用"} if not self._open_document(doc_url): return {"success": False, "logged_in": False, "error": self._last_error or "打开文档失败"} + self._ensure_login_dialog() + self._try_confirm_login() logged_in = self._is_logged_in() if not self._has_saved_login_state(): logged_in = False