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

Selenium+Python中CSS_SELECTOR失效问题求助及学习咨询

问题解决:定位并点击第二个TabLink元素

先看你代码里的核心问题,直接修正并说明如下:

错误分析

  1. CSS选择器语法错误:你写的class#TabLink_tab__uKOPj完全不符合规则——#是定位id的符号,class选择器要用.,正确格式应为.TabLink_tab__uKOPj。
  2. 错误调用方法:select_by_index是专门给<select>下拉框用的方法,你要定位的是标签页链接(大概率是<button>或<a>标签),这类元素只能用click()触发点击。
  3. 未精准定位第二个元素:要选中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选首尾元素
  • 用浏览器开发者工具练手:
    1. 按F12打开开发者工具,在元素面板找到目标元素
    2. 右键选择「复制」-「复制CSS选择器」,对比自己写的差异
    3. 在控制台用document.querySelector("你的选择器")测试,能返回目标元素就说明选择器有效
  • 针对性练习:找不同类型网页(如电商、新闻站),尝试用CSS选择器定位导航栏、列表项、按钮等元素,熟练不同场景的写法
  • 记常用场景选择器:比如定位带特定属性的元素[data-id="123"],Selenium还支持:visible这类扩展伪类定位可见元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 23:02:35