fix(切号): 等面板/等回读改成轮询(固定 sleep 会把"没加载出来"误判成"本机没登这个号")+ 实测选择器入档
A01(抖音 40.6.0)实测: · 冷启动后按固定 sleep(1.2s) 找账号列表行 → 列表还没渲染 → 判成"本机没登这个号" → **漏发且不报错**; 现在两处都轮询到 deadline:等面板出目标行、等回读变成目标名。 · 实测选择器(写进 doc/research/U2_ELEMENT_SELECTORS.md §七 与 .env.example): 昵称 `resourceId=com.ss.android.ugc.aweme:id/tk+`、切换入口 `descriptionContains=切换账号`、 切号按名字点行 `textContains=<名字>`(行 TextView 不可点但 u2 按中心坐标点,行容器接住)、 「我」页签 `descriptionContains=我`(desc 是「我,按钮」)。 · 并记下"为什么不要用 (…b7w)[N]":序号型会随列表行数/顺序错位 → 点错号 = 发到别人号上。 · 冷启动切号 17.2s 成功、热态 12.9s;A01 最终已切回原账号。
This commit is contained in:
+6
-5
@@ -545,10 +545,11 @@ def build_release_steps():
|
||||
因为那些是混淆 id / 结构 xpath,写死了改版就废 —— 执行时会明确提示
|
||||
"selector_value 为空,请抓取元素",不会静默跳过。
|
||||
|
||||
预填了选择器的只有底部「+」入口(`descriptionContains=拍摄`)与
|
||||
「我」(`descriptionContains=我`),因为这两条在真机上实测过、
|
||||
且是按描述定位、跨版本相对稳。**「我」页面上的昵称控件留空待抓**
|
||||
(`read_account_name` 与守卫都用它,抓一次两处都填)。
|
||||
预填了选择器的:底部「+」入口(`descriptionContains=拍摄`)、
|
||||
「我」(`descriptionContains=我`)、以及**昵称控件与「切换账号」入口**(后者来自 `.env`,
|
||||
`config.DOUYIN_NAME_SELECTOR_VALUE` / `DOUYIN_SWITCH_SELECTOR_VALUE`)——
|
||||
这些都在真机上实测过(40.6.0,见 doc/research/U2_ELEMENT_SELECTORS.md §七)。
|
||||
`.env` 没填时骨架里那两处就是空的,执行时会明确提示"请抓取元素",不会静默跳过。
|
||||
"""
|
||||
def sid(name):
|
||||
return f"step_rel_{name}_{uuid.uuid4().hex[:6]}"
|
||||
@@ -588,7 +589,7 @@ def build_release_steps():
|
||||
# 也会处理"本机没登这个号"(直接跳过、不重试)。
|
||||
loop_body = [
|
||||
dict(build_switch_step("③ 切换账号(切到本次要发的那个名字;已在该号则直接过)")),
|
||||
dict(build_read_name_step("④ 读取本机当前账号名字(昵称控件选择器待抓)")),
|
||||
dict(build_read_name_step("④ 读取本机当前账号名字")),
|
||||
{"id": sid("check"), "type": "if_el",
|
||||
"label": "⑤ 校验账号:当前登的是不是这次要发的那个名字",
|
||||
"params": {"selector_type": "xpath",
|
||||
|
||||
Reference in New Issue
Block a user