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

Selenium调用find方法返回空列表但页面实际存在对应元素问题求助

定位失败的核心原因

Selenium 提供的find_elements_by_class_name方法仅支持传入单个类名,你传入的card-item js-product-data是两个独立的类名,中间的空格是类名分隔符,该方法会把整个字符串当做一个包含空格的类名去匹配,页面中不存在对应类名的元素,所以会返回空列表或抛出找不到元素的异常。

XPath可正常定位的原因

XPath 的匹配规则支持多类名组合校验:

  • 如果你用的是全量匹配写法//*[@class='card-item js-product-data'],会直接匹配class属性值完全等于该字符串的元素
  • 如果你用的是多条件匹配写法//*[contains(@class,'card-item') and contains(@class,'js-product-data')],会匹配同时包含两个类名的元素
    两种写法都符合你的定位需求,所以可以正常找到目标元素。

其他可选的正确定位方式

你也可以用CSS选择器实现同样的多类名定位,写法更简洁:

products = items.find_elements(By.CSS_SELECTOR, '.card-item.js-product-data')

注意:类名前加.,多个类名之间直接拼接不需要加空格

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:39:02