From 01e810077426de5d09c497acf54008a701634742 Mon Sep 17 00:00:00 2001 From: KenanZhu <3471685733@qq.com> Date: Mon, 16 Mar 2026 16:55:52 +0800 Subject: [PATCH] =?UTF-8?q?feat(LibCheckin):=20=E6=94=AF=E6=8C=81=E6=A0=A1?= =?UTF-8?q?=E5=9B=AD=E7=BD=91=E7=8E=AF=E5=A2=83=E4=B8=8B=E5=9B=BE=E4=B9=A6?= =?UTF-8?q?=E9=A6=86=E8=BF=9C=E7=A8=8B=E7=AD=BE=E5=88=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 __enableCheckinBtn 方法,通过 JavaScript 移除签到按钮的 disabled 属性 - 在检测到签到按钮不可用时,自动尝试启用按钮而非直接失败 - 支持在校园网环境下无需连接图书馆网络即可完成签到 - 优化签到流程的用户提示信息" --- src/operators/LibCheckin.py | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/src/operators/LibCheckin.py b/src/operators/LibCheckin.py index 7e5ffd6..37cd23c 100644 --- a/src/operators/LibCheckin.py +++ b/src/operators/LibCheckin.py @@ -88,6 +88,31 @@ class LibCheckin(LibOperator): return False + def __enableCheckinBtn( + self + ) -> bool: + + script = """ + try { + var checkin_btn = document.getElementById('btnCheckIn'); + if (checkin_btn) { + checkin_btn.classList.remove('disabled'); + return true; + } + return false; + } catch (e) { + return false; + } + """ + result = self.__driver.execute_script(script) + time.sleep(0.1) + if result: + self._showTrace("签到按钮已启用") + else: + self._showTrace("签到按钮启用失败") + return result + + def checkin( self, username: str @@ -104,8 +129,10 @@ class LibCheckin(LibOperator): self._showTrace(f"用户 {username} 签到界面加载失败 !") return False if "disabled" in checkin_btn.get_attribute("class"): - self._showTrace("签到按钮不可用, 可能不在场馆内, 请连接图书馆网络后重试") - return False + self._showTrace("签到按钮不可用, 可能不在场馆内, 正在尝试启用......") + if not self.__enableCheckinBtn(): + self._showTrace(f"签到按钮启用失败 !") + return False checkin_btn.click() if self._waitResponseLoad(): self._showTrace(f"用户 {username} 签到成功 !")