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

Selenium Python中能否用By.CLASS_NAME多类名定位元素?

问题解答

这种写法不可行。

原因很直接:By.CLASS_NAME的定位逻辑是匹配单个完整的类名,你传入的带空格的字符串会被当成一个整体的类名去查找,但页面元素的class属性是多个独立类名的集合,自然找不到目标元素。

给你几个可行的解决方案:

方案1:使用CSS选择器(推荐)

CSS选择器支持直接指定多个类名,两种写法可选:

  • 把类名用点连接,带冒号的类名需要转义:
browser.find_element(By.CSS_SELECTOR, ".text-orange-400.transition.hover\\:opacity-70")
  • 用属性选择器的~=语法,匹配属性中的独立类名,无需转义特殊字符:
browser.find_element(By.CSS_SELECTOR, "[class~='text-orange-400'][class~='transition'][class~='hover:opacity-70']")

方案2:使用XPATH

如果习惯用XPATH,也可以通过多条件匹配实现:

  • 基础版(注意:可能匹配到包含目标子串的其他类名)
browser.find_element(By.XPATH, "//*[contains(@class, 'text-orange-400') and contains(@class, 'transition') and contains(@class, 'hover:opacity-70')]")
  • 严谨版(避免误匹配相似类名)
browser.find_element(By.XPATH, "//*[contains(concat(' ', @class, ' '), ' text-orange-400 ') and contains(concat(' ', @class, ' '), ' transition ') and contains(concat(' ', @class, ' '), ' hover:opacity-70 ')]")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:01:01