Selenium+Python中CSS_SELECTOR失效问题求助及学习咨询
问题解决:定位并点击第二个TabLink元素
先看你代码里的核心问题,直接修正并说明如下:
错误分析
- CSS选择器语法错误:你写的
class#TabLink_tab__uKOPj完全不符合规则——#是定位id的符号,class选择器要用.,正确格式应为.TabLink_tab__uKOPj。 - 错误调用方法:
select_by_index是专门给<select>下拉框用的方法,你要定位的是标签页链接(大概率是<button>或<a>标签),这类元素只能用click()触发点击。 - 未精准定位第二个元素:要选中class为
TabLink_tab__uKOPj的第二个元素,需要用CSS伪类:nth-of-type(2)或:nth-child(2)限定位置。
修正后的代码
from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By import time def go_to_url(driver, url): driver.get(url) # 接受cookies WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"button#onetrust-accept-btn-handler"))).click() time.sleep(1) def main(): driver = webdriver.Firefox() driver.maximize_window() url = "https://www.nba.com/games" go_to_url(driver, url) # 定位第二个class为TabLink_tab__uKOPj的元素并点击 second_tab = WebDriverWait(driver,10).until( EC.element_to_be_clickable((By.CSS_SELECTOR,".TabLink_tab__uKOPj:nth-of-type(2)")) ) second_tab.click() if __name__ == "__main__": main()
学习CSS选择器的实用方法
- 先掌握核心语法:
- id选择器:
#id值 - class选择器:
.class值 - 标签选择器:直接写标签名(如
button、a) - 组合选择器:如
div.TabLink_tab__uKOPj(定位class为TabLink_tab__uKOPj的div元素) - 伪类定位:
:nth-child(n)、:nth-of-type(n)选第n个元素,:first-child、:last-child选首尾元素
- id选择器:
- 用浏览器开发者工具练手:
- 按F12打开开发者工具,在元素面板找到目标元素
- 右键选择「复制」-「复制CSS选择器」,对比自己写的差异
- 在控制台用
document.querySelector("你的选择器")测试,能返回目标元素就说明选择器有效
- 针对性练习:找不同类型网页(如电商、新闻站),尝试用CSS选择器定位导航栏、列表项、按钮等元素,熟练不同场景的写法
- 记常用场景选择器:比如定位带特定属性的元素
[data-id="123"],Selenium还支持:visible这类扩展伪类定位可见元素
内容的提问来源于stack exchange,提问作者de4dhe4d00
相关产品推荐
相关产品推荐

