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

如何获取body标签属性并校验指定元素是否存在于body节点下

实现方案

核心逻辑是结合你预先存储的body class属性,筛选对应body节点后查找目标元素,以下是两种可直接使用的Python实现:

方法1:直接通过XPath筛选定位

直接在定位表达式中指定body的class属性,一步定位目标元素,适合快速校验:

from selenium.common.exceptions import NoSuchElementException

# 你预先存储的body class变量
Body_class = driver.find_element_by_tag_name('body').get_attribute('class') 

try:
    # 定位规则:带有指定class的body下的第二个div元素,XPath同级元素索引从1开始计数
    target_element = driver.find_element_by_xpath(f'//body[@class="{Body_class}"]/div[2]')
    # 若需要匹配元素文本,可修改XPath为如下格式:
    # target_element = driver.find_element_by_xpath(f'//body[@class="{Body_class}"]/div[text()="2nd element"]')
    print("指定元素存在")
except NoSuchElementException:
    print("指定元素不存在")

方法2:先校验body属性再查找元素

如果需要先确认当前body属性和执行初期存储的一致,避免页面动态更新导致校验失效,可以用该方法:

# 获取当前body的class属性和存储值对比
current_body_class = driver.find_element_by_tag_name('body').get_attribute('class')
if current_body_class != Body_class:
    print("body的class属性已变更,与初期存储值不一致")
else:
    # 获取body下所有div元素
    div_list = driver.find_element_by_tag_name('body').find_elements_by_tag_name('div')
    if len(div_list) >= 2:
        # find_elements返回的列表索引从0开始,第二个元素下标为1
        second_div = div_list[1]
        # 可按需添加文本、属性等额外校验逻辑
        if second_div.text == "2nd element":
            print("第二个指定元素存在")
        else:
            print("第二个div存在,但文本不符合预期")
    else:
        print("body下div元素不足2个,指定元素不存在")

注意事项

  • 若body的class是多个空格分隔的类名,建议把XPath中的@class=换成contains(@class, ),即f'//body[contains(@class, "{Body_class}")]/div[2]',避免多类名场景匹配失败
  • 若目标元素不是div,只需修改XPath或查找的标签名即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:48:03