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

Selenium元素定位问题:无法通过类名获取产品价格元素

解决Selenium多类名定位失败的问题

问题原因

Selenium的By.CLASS_NAME仅支持单个类名,你传入的字符串包含多个空格分隔的类名(sc-3f2da4f5-0 dievjx sc-b45c0335-2 fWUVlw),这不符合该定位方式的规则,因此无法找到目标元素。

解决方案

1. 使用CSS选择器定位多类名元素

将多个类名用.连接,作为CSS选择器的条件:

from selenium.webdriver.common.by import By

# 定位目标父元素
price_parent = driver.find_element(By.CSS_SELECTOR, '.sc-3f2da4f5-0.dievjx.sc-b45c0335-2.fWUVlw')
# 从父元素中提取价格(需根据页面实际价格元素的定位方式调整)
price = price_parent.find_element(By.CLASS_NAME, 'your-price-class').text

2. 添加显式等待确保元素加载完成

搜索操作后页面可能存在加载延迟,直接定位会导致元素未找到,建议使用显式等待:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待10秒,直到目标父元素出现
wait = WebDriverWait(driver, 10)
price_parent = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.sc-3f2da4f5-0.dievjx.sc-b45c0335-2.fWUVlw')))

3. 额外检查项

  • 确认目标元素不在<iframe>标签内,若存在需先切换到对应iframe:
    driver.switch_to.frame("iframe_id_or_name")
    # 执行元素定位操作
    driver.switch_to.default_content()  # 操作完成后切回主文档
    
  • 若页面存在AJAX动态渲染,可改用EC.visibility_of_element_located等待元素可见,而非仅存在于DOM中。

内容的提问来源于stack exchange,提问作者Jesús Navarro Hernández

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 02:56:12