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

如何在Selenium中基于<block>元素相对定位<taga>和<tagb>?

如何从Selenium获取的元素中定位子元素和

目标HTML结构

<block data-id="1234">
  <taga>New York</taga>
  <tagb>Yankees</tagb>
</block>
<block data-id="5678">
  <taga>Montreal</taga>
  <tagb>Expos</tagb>
</block>
<block data-id="2468">
  <taga>Boston</taga>
  <tagb>Red Sox</tagb>
</block>

现有Python代码

teams = driver.find_elements("xpath", "//block")
for team in teams:
    print(team.get_attribute("data-id"))

你之前用//taga和//tagb定位的问题在于,这类XPath是文档级绝对路径,会返回整个页面中第一个匹配的元素,而非当前<block>下的子元素。

正确解决方法

要定位当前team元素下的子元素,需使用相对XPath,在路径前加.表示从当前元素开始查找:

  1. 若<taga>和<tagb>是<block>的直接子元素,用./taga和./tagb:
print(team.find_element("xpath", "./taga").text)
print(team.find_element("xpath", "./tagb").text)
  1. 若子元素可能嵌套在更深层级,用.//taga和.//tagb(匹配当前元素下所有后代中的目标元素):
print(team.find_element("xpath", ".//taga").text)
print(team.find_element("xpath", ".//tagb").text)

修改后的完整代码

teams = driver.find_elements("xpath", "//block")
for team in teams:
    print(f"ID: {team.get_attribute('data-id')}")
    print(f"城市: {team.find_element('xpath', './taga').text}")
    print(f"球队: {team.find_element('xpath', './tagb').text}")
    print("---")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:43:17