You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium Python:遍历菜单项并判断Workloads是否展开

定位Workloads菜单并判断展开状态

解决遍历ng-star-inserted元素出错的问题

你循环出错大概率是因为元素未加载完成或者定位范围太广(包含了非菜单项的元素),可以按以下步骤修正:

  1. 先等待所有菜单项加载完成,避免因DOM未渲染导致的元素找不到问题
  2. 缩小定位范围,给ng-star-inserted加上菜单项的标签限制(比如li、a,根据你页面实际结构调整)

示例代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("你的页面URL")

# 等待菜单项加载,超时10秒
wait = WebDriverWait(driver, 10)
# 假设菜单项是<li>标签,带ng-star-inserted类
menu_items = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "li.ng-star-inserted")))

# 遍历找Workloads
for item in menu_items:
    try:
        # 去除文本前后空格,避免匹配失败
        item_text = item.text.strip()
        if item_text == "Workloads":
            # 获取aria-expanded属性判断是否展开
            is_expanded = item.get_attribute("aria-expanded") == "true"
            print(f"Workloads菜单状态: {'已展开' if is_expanded else '未展开'}")
            break
    except Exception as e:
        # 跳过不可交互的元素
        continue

快速定位的XPath写法

不用遍历,直接用XPath定位到Workloads菜单,更高效:

基础写法(精确匹配文本)

# 定位文本为Workloads、带ng-star-inserted类的li元素
workloads_menu = wait.until(EC.presence_of_element_located(
    (By.XPATH, "//li[contains(@class, 'ng-star-inserted') and text()='Workloads']")
))
is_expanded = workloads_menu.get_attribute("aria-expanded") == "true"

兼容文本含空格的写法

如果菜单文本前后有空格或换行,用contains匹配:

workloads_menu = wait.until(EC.presence_of_element_located(
    (By.XPATH, "//li[contains(@class, 'ng-star-inserted') and contains(text(), 'Workloads')]")
))

若菜单项文本在子标签内(比如)

如果Workloads文本在<li>下的<a>标签里,调整XPath:

# 定位父元素li的aria-expanded属性
workloads_menu = wait.until(EC.presence_of_element_located(
    (By.XPATH, "//li[contains(@class, 'ng-star-inserted') and .//a[text()='Workloads']]")
))

注意事项

  • 替换代码中的标签(li、a)为你页面实际的菜单项标签
  • aria-expanded属性值通常是字符串"true"或"false",注意不要和布尔值混淆
  • 如果菜单需要点击才能显示,要先处理菜单的展开操作(比如点击父菜单)

内容的提问来源于stack exchange,提问作者JimmyG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 19:03:18