如何在Selenium中遍历WebElement内部的未知类型标签
Selenium遍历指定WebElement下所有未知类型子元素的实现方案
- 不需要预先指定具体标签名,通过选择器的通配规则即可实现全量匹配,完全适配未知标签组合的场景,无需逐一枚举可能出现的标签类型。
- 若需要匹配目标div下所有层级的内部元素(包含嵌套在其他标签内部的子元素,比如p标签内的a标签),在已获取的外层div WebElement上调用CSS选择器匹配即可:
from selenium.webdriver.common.by import By # 假设parent_div是你已经拿到的包裹目标结构的div对应的WebElement all_inner_elements = parent_div.find_elements(By.CSS_SELECTOR, "*") - 若仅需要获取div下的第一级直接子元素,不抓取深层嵌套的内部标签,可使用XPath的通配规则实现范围控制:
# 匹配当前div节点下所有直接子元素,不会向下深入匹配嵌套在内部的元素 direct_child_elements = parent_div.find_elements(By.XPATH, "./*") - 拿到元素列表后,可逐一遍历提取需要的信息,无需提前判断元素类型:
for element in all_inner_elements: current_tag = element.tag_name # 动态获取当前元素的标签名,如h3、p、h4 current_text = element.text # 获取元素的可见文本内容 # 可根据实际需要提取元素的其他属性
注意事项:
- 所有元素查找操作都必须绑定在已经获取的外层div WebElement上执行,不要直接在全局driver对象上调用匹配方法,否则查找范围会覆盖整个页面,容易匹配到div外的无关元素。
- 新版Selenium已废弃旧版的
find_elements_by_标签名系列方法,统一使用find_elements配合By类的写法,同时支持CSS选择器、XPath的全部通配能力,灵活度远高于旧版需要指定固定标签名的查找方法。
内容的提问来源于stack exchange,提问作者Alexander Vedmed'
相关产品推荐
相关产品推荐

