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

Python Selenium:如何查找类名末尾带空格的元素?

解决Selenium中查找多类名元素的问题

问题原因

HTML里的class属性值中的空格是多个类名的分隔符,而非类名的一部分。你写的'ui-table__row table__row--selected '其实对应两个独立的类:ui-table__row和table__row--selected,末尾的空格是多余的(浏览器解析时会忽略)。而By.CLASS_NAME只能匹配单个类名,无法识别带空格的多类名组合,所以找不到元素。

正确解决方案

推荐使用CSS选择器或XPath来匹配同时拥有多个类的元素,其中CSS选择器是最简洁可靠的方式:

方法1:CSS选择器(推荐)

用.连接多个类名,直接匹配同时拥有这些类的元素(不关心类的顺序):

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

element = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.ui-table__row.table__row--selected')))

注意:这里的类名之间没有空格,空格在CSS里表示后代元素,不要混淆。

方法2:XPath

如果偏好XPath,可以选择灵活匹配或精确匹配:

  • 灵活匹配(只要包含两个类即可,不限制顺序和其他类):
element = wait.until(EC.presence_of_element_located((By.XPATH, "//*[contains(@class, 'ui-table__row') and contains(@class, 'table__row--selected')]")))
  • 精确匹配(仅当元素的class属性值完全是这两个类时生效,顺序不能变):
element = wait.until(EC.presence_of_element_located((By.XPATH, "//*[@class='ui-table__row table__row--selected']")))

额外提示

  • 永远不要在类名里保留多余的空格,浏览器会自动忽略class属性首尾的空格,原代码里末尾的空格是无效的,直接去掉即可。
  • 当需要匹配多个类时,CSS选择器是Selenium官方推荐的更高效的方式,执行速度通常比XPath更快。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 15:22:14