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

Python Selenium中如何基于父元素用CSS选择器定位直接子元素

解决Python Selenium中CSS选择器无法以>开头的问题

针对你遇到的CSS选择器不能直接以>开头的问题,给你几个实用的替代方案,不用繁琐的XPath:

  • 方法1:用:scope伪类(最贴合需求)
    :scope伪类专门用来指代当前执行查找的上下文元素(也就是这里的row),这样就能合法地用>来选择直接子元素了,完美匹配你原本的逻辑:

    for row in driver.find_elements(By.CSS_SELECTOR, "div[style='overflow: hidden;'] > div > div:nth-child(3)"):
        player = row.find_element(By.CSS_SELECTOR, ':scope > div:first-child > span').text
    
  • 方法2:简化选择器(仅限结构确定的场景)
    如果能确定row的第一个子元素就是div,或者你只需要匹配row下第一个div后代里的span,可以直接去掉开头的>:

    for row in driver.find_elements(By.CSS_SELECTOR, "div[style='overflow: hidden;'] > div > div:nth-child(3)"):
        player = row.find_element(By.CSS_SELECTOR, 'div:first-child > span').text
    

    注意:如果row的第一个子元素不是div,这个选择器会匹配row所有后代里的第一个div,可能不符合预期,所以只适合结构固定的情况。

  • 方法3:分两步查找(逻辑更直观)
    先找到row的直接子div,再在这个div里找span,步骤清晰不容易出错:

    for row in driver.find_elements(By.CSS_SELECTOR, "div[style='overflow: hidden;'] > div > div:nth-child(3)"):
        child_div = row.find_element(By.CSS_SELECTOR, ':scope > div:first-child')
        player = child_div.find_element(By.CSS_SELECTOR, 'span').text
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:40:38