魔法指令案例01--选择职位类型,如果改变职位类型就报错找不到元素为什么呢?官方大大魔法指令第二节课的评价中都是这个问题
回答
收藏

魔法指令案例01--选择职位类型,如果改变职位类型就报错找不到元素为什么呢?官方大大魔法指令第二节课的评价中都是这个问题

未来的我
2025-11-15 15:15·浏览量:201
未来的我
发布于 2025-11-15 15:15201浏览

职位大类=客服/运营      职位子类=客服专员   时运行成功

如果改变职位大类名称和职位子类名称时就报错找不到元素

下面这条指令的代码

from typing import *

try:

   from xbot.app.logging import trace as print

except:

   from xbot import print


from xbot_ai import *


def select_job_type(web_page, job_type_trigger, job_type_dropdown, job_type_sub_panel, major_category: str, sub_category: str) -> None:

   """

   title: 选择职位类型

   description: 点击`职位类型`,悬停在`职位类型下拉面板`中的职位大类上,然后点击`职位类型子面板`中的职位子类。

   inputs:

       - web_page (WebPage): 目标网页

       - job_type_trigger (Selector): 职位类型,uuid: sxmk831t

       - job_type_dropdown (Selector): 职位类型下拉面板,uuid: sxn5nkdv

       - job_type_sub_panel (Selector): 职位类型子面板,uuid: sxnhkzgs

       - major_category (str-textbox): 职位大类名称,eg: "客服/运营"

       - sub_category (str-textbox): 职位子类名称,eg: "客服专员"

   outputs:

       - None

   """

   print("1. 点击职位类型触发下拉面板")

   job_type_trigger_element = web_page.wait_for_element(job_type_trigger, timeout=10)

   job_type_trigger_element.click(delay_after=0.3)


   print(f"2. 悬停在职位大类 '{major_category}' 上")

   job_type_dropdown_element = web_page.wait_for_element(job_type_dropdown, timeout=10)

   major_category_element = job_type_dropdown_element.wait_for_element(f".//span[text()='{major_category}']", timeout=10)

   major_category_element.hover(delay_after=0.3)


   print(f"3. 在职位类型子面板中点击职位子类 '{sub_category}'")

   job_type_sub_panel_element = web_page.wait_for_element(job_type_sub_panel, timeout=10)

   # 修复:职位子类可能在不同的div.position-select-dropdown__list中,需要更宽泛的查找范围

   # 原始XPath: .//a[text()='{sub_category}'] 仅在当前子面板的直接子元素中查找a标签

   # 修正后XPath: .//div[@class="position-select-dropdown__list"]/a[text()='{sub_category}']

   # 这样可以确保在子面板的任何一个子列表中找到目标子类

   # 进一步修正:根据提供的截图和HTML,"风控"等子类直接位于span标签之后,而不是在div[@class="position-select-dropdown__list"]内部。

   # 并且,子类可能在不同的grandson div中,所以需要查找所有grandson div下的a标签。

   sub_category_element = job_type_sub_panel_element.wait_for_element(f".//div[contains(@class, 'position-select-dropdown__grandson')]//a[text()='{sub_category}']", timeout=10)

   sub_category_element.click(delay_after=0.3)

   print(f"4. 成功选择职位类型:大类 '{major_category}', 子类 '{sub_category}'")


收藏
全部回答1
最新
发布回答
回答