fix(切号): 切完只等(默认 15 秒)不再去点「我」刷新 —— wait_after 可调
用户实测要求:"去掉切完账号下拉刷新这一步,直接改成等待 15 秒"。 原来的做法是"回读不到就再点一次「我」页签"—— 在设备上看着像去点刷新,还可能打断 抖音换号后的整体重载。 · tasks/generic/task.py:切完后按 wait_after(默认 15s,步骤参数可调)静等,等完只回读、 **不再点任何东西**(读不到就多读几次,页面渲染有零点几秒抖动) · 参数落到位:STEP_TYPES / 骨架 build_switch_step / 编辑器面板 / 发布页就地编辑字段表 · 测试:用例里 wait_after=0.2(不然一跑就一分多钟) · 文档:TASK_DEV §3 的 switch_account 行 + research/U2_ELEMENT_SELECTORS §七(记下"只能等"这条实测教训)
This commit is contained in:
+12
-10
@@ -138,7 +138,7 @@ STEP_TYPES = [
|
||||
"switch_selector_type": "xpath", "switch_selector_value": "",
|
||||
"name_selector_type": "", "name_selector_value": "",
|
||||
"me_selector_type": "descriptionContains", "me_selector_value": "我",
|
||||
"timeout": 8, "verify": True, "max_attempts": 2,
|
||||
"timeout": 8, "wait_after": 15, "verify": True, "max_attempts": 2,
|
||||
"on_login_page": "stop"}},
|
||||
{"type": "foreach_account", "label": "循环本机待发的号", "icon": "🔂",
|
||||
"params": {"date_source": "today", "fixed_date": "", "retry_failed": True,
|
||||
@@ -1254,23 +1254,25 @@ class GenericStepsWorker(BaseWorker):
|
||||
if not want_verify:
|
||||
self.set_action(f"已点击『{target}』(未校验)")
|
||||
return True
|
||||
# 等切换生效:切换会触发抖音**整体重启**(等于换了个号重新登录),十几秒才回到
|
||||
# 「我」页是正常的(实测:整步跑了 77s,其中大部分就是在等它重启完)。而且重启后
|
||||
# 落的地方**可能是信息流**(不是「我」页)—— 所以窗口放到 30s,并且**读不到就重新点
|
||||
# 一次「我」**再读(踩过两次:窗口太短 → 明明切成功却判失败 → 整轮什么都不发)。
|
||||
# 切完之后**先等它自己重载**(默认 15 秒,`wait_after` 可在步骤参数里调)。
|
||||
# 抖音换号会整体重启,中途去点任何东西(包括再点一次「我」页签那一下"刷新")
|
||||
# 都可能打断它加载 —— 实测用户的要求就是:"别刷新,等 15 秒就行"。
|
||||
wait_after = float(params.get("wait_after") or 15)
|
||||
end = time.time() + max(0.0, wait_after)
|
||||
while time.time() < end and not self.stopped():
|
||||
time.sleep(0.5)
|
||||
# 等完再回读;**不再点任何东西**,只多读几次(页面渲染有零点几秒的抖动)
|
||||
last_got = ""
|
||||
vdeadline = time.time() + max(30.0, timeout)
|
||||
while time.time() < vdeadline:
|
||||
for _ in range(5):
|
||||
if self.stopped():
|
||||
return False
|
||||
last_got = self._read_name_now(d, params)
|
||||
if last_got == target:
|
||||
_log.info(f"[{self.serial}] 切换账号成功:『{target}』(第 {i} 次)")
|
||||
_log.info(f"[{self.serial}] 切换账号成功:『{target}』(第 {i} 次,"
|
||||
f"等了 {wait_after:.0f}s)")
|
||||
self.set_action(f"已切到『{target}』")
|
||||
self._vars["account_name"] = target
|
||||
return True
|
||||
if not last_got:
|
||||
self._click_sel(d, me_type, me_val, timeout=1)
|
||||
time.sleep(0.8)
|
||||
hint = self._page_has_text(d, self._LOGIN_HINTS) if not last_got else ""
|
||||
if hint:
|
||||
|
||||
Reference in New Issue
Block a user