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

Selenium脚本异常:item.find_elements未在当前元素内检索,全局查找div

解决Selenium中WebElement范围内查找子元素失效的问题

你遇到的问题是遍历<cw-item>元素时,调用item.find_elements(By.TAG_NAME, "div")未在当前元素范围内查找,而是全局检索所有div。这是因为部分场景下By.TAG_NAME结合WebElement的查找逻辑可能出现异常,可通过以下两种方式解决:

方案一:使用相对XPATH定位

通过相对路径的XPATH限定查找范围,.//表示从当前元素上下文开始查找子元素,代码修改如下:

try:
    tradeables = WebDriverWait(driver, 50).until(
        EC.presence_of_all_elements_located((By.XPATH, "//cw-item"))
    )
    for item in tradeables:
        # 用相对XPATH限制在当前cw-item内查找div
        divs = item.find_elements(By.XPATH, ".//div")
        print(divs)
except Exception as e:
    print(e)

方案二:使用CSS选择器定位

WebElement调用find_elements(By.CSS_SELECTOR, "div")默认会在当前元素的子范围内查找,兼容性更稳定,代码如下:

try:
    tradeables = WebDriverWait(driver, 50).until(
        EC.presence_of_all_elements_located((By.XPATH, "//cw-item"))
    )
    for item in tradeables:
        divs = item.find_elements(By.CSS_SELECTOR, "div")
        print(divs)
except Exception as e:
    print(e)

原方法失效的原因大概率是页面Angular封装的元素(带有_ngcontent属性)干扰了By.TAG_NAME的默认查找逻辑,改用上述两种定位方式即可解决范围错误的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 03:40:27