mirror of
https://github.com/KenanZhu/AutoLibrary.git
synced 2026-06-18 23:43:02 +08:00
refactor(pages): 统一命名规范并修复 SeatMapOverlay 元素等待目标错误
- AutoLibPages → AutoLib(移除实现细节后缀) - ReserveValidator → ReserveChecker(与 RecordChecker 命名一致) - CaptchaHandler → CaptchaSolver(语义更准确,职责是"求解"验证码) - ReserveChecker.validate() → check()(与 RecordChecker 风格统一) - 修复 SeatMapOverlay.selectSeat() 中 _waitClickable 等待页面全局 <a> 而非具体 seat_link 元素的时序缺陷 - ALMainWorkers 切换为 pages.AutoLib 新版实现 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -42,16 +42,13 @@ class CheckinFlow(MsgBase):
|
||||
if not self._shell.waitCheckinButton():
|
||||
self._showTrace(f"用户 {username} 签到界面加载失败 !", self.TraceLevel.ERROR)
|
||||
return False
|
||||
|
||||
if self._shell.isCheckinButtonDisabled():
|
||||
self._showTrace("签到按钮不可用, 可能不在场馆内, 正在尝试启用......")
|
||||
if not self._shell.enableCheckinButtonByJS():
|
||||
self._showTrace(f"签到按钮启用失败 !", self.TraceLevel.ERROR)
|
||||
return False
|
||||
self._showTrace("签到按钮已启用")
|
||||
|
||||
self._shell.clickCheckinButton()
|
||||
|
||||
try:
|
||||
with CheckinResultDialog(self._driver) as dialog:
|
||||
result_msg = dialog.getResultMessage()
|
||||
|
||||
@@ -53,23 +53,18 @@ class RenewFlow(MsgBase):
|
||||
prefer_earlier = renew_info["prefer_early"]
|
||||
end_time = record["time"]["end"]
|
||||
target_renew_mins = timeStrToMins(end_time) + renew_info["expect_duration"] * 60
|
||||
|
||||
if not self._validateRenewTime(end_time, target_renew_mins):
|
||||
return False
|
||||
|
||||
if not self._shell.waitExtendButton():
|
||||
self._showTrace(f"用户 {username} 续约界面加载失败 !", self.TraceLevel.ERROR)
|
||||
return False
|
||||
|
||||
if self._shell.isExtendButtonDisabled():
|
||||
self._showTrace(
|
||||
f"用户 {username} 续约按钮不可用, 可能不在场馆内, "
|
||||
f"请连接图书馆网络后重试"
|
||||
)
|
||||
return False
|
||||
|
||||
self._shell.clickExtendButton()
|
||||
|
||||
try:
|
||||
with RenewDialog(self._driver) as dialog:
|
||||
if not dialog.waitUntilReady():
|
||||
@@ -82,14 +77,12 @@ class RenewFlow(MsgBase):
|
||||
self._shell.refresh()
|
||||
self._showTrace(f"用户 {username} 续约失败 !", self.TraceLevel.ERROR)
|
||||
return False
|
||||
|
||||
renew_ok_btn = dialog.getOkButton()
|
||||
renew_time_opts = dialog.getTimeOptions()
|
||||
if not renew_time_opts:
|
||||
self._showTrace("当前未查询到可用续约时间 !", self.TraceLevel.WARNING)
|
||||
self._shell.refresh()
|
||||
return False
|
||||
|
||||
best_opt, best_text, actual_diff, free_times = findBestTimeOption(
|
||||
renew_time_opts, target_renew_mins, max_diff, prefer_earlier,
|
||||
is_reserve=False,
|
||||
@@ -111,7 +104,6 @@ class RenewFlow(MsgBase):
|
||||
renew_ok_btn.click()
|
||||
self._shell.refresh()
|
||||
return True
|
||||
|
||||
self._showTrace(
|
||||
"无法选择最近的可用续约时间 ! "
|
||||
f"所有可选时间与目标时间相差都超过了 {max_diff} 分钟 !",
|
||||
|
||||
@@ -68,7 +68,6 @@ def findBestTimeOption(
|
||||
)
|
||||
actual_diff = time_val - target_time
|
||||
abs_diff = abs(actual_diff)
|
||||
|
||||
if abs_diff < best_time_diff or (
|
||||
abs_diff == best_time_diff
|
||||
and (
|
||||
@@ -79,7 +78,6 @@ def findBestTimeOption(
|
||||
best_time_diff = abs_diff
|
||||
best_actual_diff = actual_diff
|
||||
best_time_opt = time_opt
|
||||
|
||||
if best_time_opt is not None:
|
||||
return (best_time_opt, best_time_opt.text.strip(), best_actual_diff, free_times)
|
||||
return (None, None, None, free_times)
|
||||
|
||||
Reference in New Issue
Block a user