Python Selenium定位含空格class元素的问题求助
解决Selenium定位多class元素的问题
可行的CSS选择器写法
针对你遇到的带多个class的按钮元素,以下几种CSS选择器写法可以正常定位:
- 同时匹配多个class(顺序不影响):
button.type.active说明:用点连接多个class名,Selenium会匹配同时拥有这些class的元素,无需考虑class在属性里的排列顺序
- 通过属性部分匹配:
button[class*="type"][class*="active"]说明:
*=表示属性值包含指定字符串,适合不确定class顺序或元素有额外class的场景 - 利用元素的唯一属性(推荐):
button#getTimetable或者button[data-type="group"][data-date="sunday"]说明:如果元素有唯一id或自定义属性,直接用这些属性定位更可靠,避免class变动带来的定位失败问题
Python代码示例
from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() # 写法1:多class点连接 btn1 = driver.find_element(By.CSS_SELECTOR, 'button.type.active') # 写法2:属性包含匹配 btn2 = driver.find_element(By.CSS_SELECTOR, 'button[class*="type"][class*="active"]') # 写法3:利用唯一id定位(最稳定) btn3 = driver.find_element(By.CSS_SELECTOR, 'button#getTimetable') # 写法4:利用自定义属性组合定位 btn4 = driver.find_element(By.CSS_SELECTOR, 'button[data-type="group"][data-date="sunday"]')
为什么之前的写法失效?
button[class="type active"]要求class属性值完全等于"type active",如果元素的class顺序变化或者新增了其他class,就会匹配失败- 错误的空格转点方式(比如写成
button.type active)是无效语法,空格在CSS选择器里表示后代元素,不是class的连接符
内容的提问来源于stack exchange,提问作者Arslan
相关产品推荐
相关产品推荐

