From 9d50eff4690d08b9ac664d489c46ea8c07c87aef Mon Sep 17 00:00:00 2001 From: admin9webs Date: Sun, 20 Sep 2026 23:39:24 +0800 Subject: [PATCH] =?UTF-8?q?Lazada=EF=BC=9A=E7=B1=BB=E7=9B=AE=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E6=98=AF=E3=80=8C=E5=88=86=E7=B1=BB=E3=80=8D=EF=BC=8C?= =?UTF-8?q?selectCategory=20=E6=94=B9=E4=B8=BA=E9=80=9A=E7=94=A8=E5=8C=B9?= =?UTF-8?q?=E9=85=8D=EF=BC=9B=E8=AE=B0=E5=BD=95=E5=85=B6=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E7=B1=BB=E7=9B=AE=E5=BC=B9=E7=AA=97=E7=BB=93=E6=9E=84=E4=B8=8D?= =?UTF-8?q?=E5=90=8C=EF=BC=88=E4=B8=8B=E4=B8=80=E8=BD=AE=20dump=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lazada建品/RECIPE.md | 11 +++++++++++ shein建品/sh_build.mjs | 5 ++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/lazada建品/RECIPE.md b/lazada建品/RECIPE.md index b6b93f6..e8e62bf 100644 --- a/lazada建品/RECIPE.md +++ b/lazada建品/RECIPE.md @@ -32,3 +32,14 @@ - `shein建品/sh_lib.mjs`(`newPage`/`closePage`/`installHook`/`readHook`) - `shein建品/sh_build.mjs`:`selectCategory`、`fillRequiredSelects`、`fillRequiredTextInputs`、`fillNativeSelects` - 骨架直接抄 `joom建品/jmbatch.mjs` 或 `alichoice建品/alcbatch.mjs` + +## 第 8 轮补充 + +1. **类目标签叫「分类」不叫「产品分类」** —— `sh_build.selectCategory` 原来只认 `/产品分类/`, + 在 Lazada 上直接 `no-item`。已改成通用匹配:标签含「分类」且**不含**「店小秘」且该项里有 + `选择分类`(改动在 `shein建品/sh_build.mjs`,对 SHEIN/Temu/aliChoice 同样生效)。 +2. 改完之后点击能打开了,但**搜索结果是 `no-path`** —— 说明 Lazada 的 `选择分类` 弹窗 + **不是** SHEIN/Temu 那个「左树右结果、`.search-result-item`」的结构。 + 下一轮第一步:点开 `选择分类`,dump 弹窗 DOM(搜 `搜索分类名称` 输入框在不在、 + 结果项的 class 是什么),再决定是复用还是另写一个 `selectCategoryLazada`。 +3. 因为类目一直没选上,`lazada*` store 始终为空 —— store 懒加载的结论仍未验证。 diff --git a/shein建品/sh_build.mjs b/shein建品/sh_build.mjs index 99c6709..4ee97e1 100644 --- a/shein建品/sh_build.mjs +++ b/shein建品/sh_build.mjs @@ -33,7 +33,10 @@ export async function selectShop(c, shopName) { /** 选产品分类(弹窗搜索关键词 → 点第一个结果 → 确定) */ export async function selectCategory(c, kw, preferName) { const clicked = await c.evalJS(`(()=>{ - const it=[...document.querySelectorAll('.ant-form-item')].filter(e=>e.offsetParent!==null).find(e=>/产品分类/.test((e.querySelector('label')||{}).innerText||'')); + // 类目项标签各平台不一:SHEIN/Temu/aliChoice 叫「产品分类」,Lazada 叫「分类」;排除「店小秘分类」 + const it=[...document.querySelectorAll('.ant-form-item')].filter(e=>e.offsetParent!==null).find(e=>{ + const t=(e.querySelector('label')||{}).innerText||''; + return /分类/.test(t) && !/店小秘/.test(t) && !!/选择分类/.test(e.innerText||'');}); if(!it) return 'no-item'; const b=[...it.querySelectorAll('*')].find(e=>(e.innerText||'').trim()==='选择分类'&&e.children.length===0); if(!b) return 'no-btn';