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

Python+Undetected Chromedriver无法定位Nike网站Cookie按钮求助

问题分析与解决方案

核心错误

你当前代码的主要问题是定位方式与传入的选择器不匹配:

  • 你使用了By.CLASS_NAME,但传入的是完整的CSS复合选择器(包含父子元素、多类名的语法),而CLASS_NAME仅支持传入单个类名,这直接导致元素无法被找到。

修正步骤与代码

1. 更换定位方式为CSS选择器

将By.CLASS_NAME改为By.CSS_SELECTOR,同时可以简化选择器(冗长的复合选择器容易因页面样式更新失效),比如直接定位Cookie按钮的核心类。

2. 用显式等待替代固定sleep

固定sleep(8)不稳定,页面加载速度受网络影响,改用WebDriverWait等待元素可点击,能大幅提升代码可靠性。

修正后的完整代码

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

def main():
    # 初始化浏览器
    browser = uc.Chrome()
    browser.get('https://www.nike.com/fr/snkrs-app?cp=24158993452_search_%7Csnkrs%7C10689554523%7C109060467241%7Ce%7Cc%7CFR%7Capp%7C508994633917&gclsrc=aw.ds&ds_rl=1252249&gclid=CjwKCAjwk_WVBhBZEiwAUHQCmV8yy66lssIN5EzoS0K8I4B1k9yk5kduxXy62w27SLfnChI_0U4UvBoC4P8QAvD_BwE')

    try:
        # 等待Cookie按钮可点击,超时15秒
        accept_btn = WebDriverWait(browser, 15).until(
            EC.element_to_be_clickable((By.CSS_SELECTOR, "button.ncss-btn-primary-dark"))
        )
        accept_btn.click()
        print("Cookie按钮已点击")
    except Exception as e:
        print(f"找不到Cookie按钮或点击失败: {str(e)}")
        # 可选:打印当前页面源码,排查元素是否存在
        # print(browser.page_source)
    
    # 保持浏览器打开,按回车关闭
    input("按回车键关闭浏览器...")
    browser.quit()

if __name__ == '__main__':
    main()

其他可选定位方案

如果上述CSS选择器仍失效,可以尝试:

  • 按按钮文本定位(法国官网Cookie按钮文本通常是"Accepter tout"):
    accept_btn = WebDriverWait(browser, 15).until(
        EC.element_to_be_clickable((By.XPATH, "//button[text()='Accepter tout']"))
    )
    
  • 按按钮的aria属性定位(更稳定,不易受样式变化影响):
    accept_btn = WebDriverWait(browser, 15).until(
        EC.element_to_be_clickable((By.CSS_SELECTOR, "button[aria-label='Accepter tout les cookies']"))
    )
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:36:27