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

Selenium调用ChromeDriverManager仅打开Chrome后程序终止问题排查

Selenium代码仅打开Chrome后停止运行的原因排查

用户问题

我希望完整执行以下Selenium代码,但程序仅打开Chrome浏览器后就停止运行,请问可能的原因是什么?我已将所需的所有包(如chromedriver)安装在脚本文件的同一目录下。

代码示例

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import time


driver = webdriver.Chrome(ChromeDriverManager().install())


time.sleep(5)

# 打开指定URL
driver.get("https://www.nike.com/de/launch/t/air-force-1-07-fresh")

# 等待页面加载完成
wait = WebDriverWait(driver, 10)
wait.until(EC.presence_of_element_located((By.CLASS_NAME, "size-grid-button")))

# 向下滚动
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

# 等待3秒
import time
time.sleep(3)

# 选择尺码9
size_button = driver.find_element_by_xpath('//*[@class="size-grid-button" and contains(text(),"9")]')
size_button.click()

# 点击购买按钮
buy_button = driver.find_element_by_class_name("buying-tools-cta-button")
buy_button.click()

# 输出提示信息
print("访问成功")

页面快照

Nike发售页面快照

可能的原因及解决方案

  • ChromeDriver版本不兼容
    即便使用ChromeDriverManager,也可能出现浏览器与驱动版本不匹配的情况。手动检查Chrome版本(在地址栏输入chrome://settings/help),确认webdriver-manager下载的驱动版本是否与浏览器一致,必要时手动下载对应版本的ChromeDriver替换。

  • 反爬机制拦截
    Nike发售页面有严格的反爬策略,能检测到Selenium的自动化特征(如特定浏览器标识),导致页面无法正常加载或后续操作被阻断。可以添加浏览器参数伪装:

    options = webdriver.ChromeOptions()
    options.add_argument("--disable-blink-features=AutomationControlled")
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    options.add_experimental_option("useAutomationExtension", False)
    driver = webdriver.Chrome(ChromeDriverManager().install(), options=options)
    
  • 元素定位超时或失效

    • 代码中设置的10秒等待时间可能不足以应对页面加载延迟或反爬验证(如人机验证),可适当延长等待时长,或添加显式等待处理动态加载的元素。
    • 元素定位器可能失效:尺码按钮的XPath可能未考虑文本格式(如含空格),购买按钮的class名称可能随页面更新变化。建议通过浏览器开发者工具重新确认元素的定位信息。
  • 冗余代码影响
    代码中重复导入import time,虽不会直接导致程序终止,但属于不良编码习惯,可能在特定环境下引发异常,建议删除第二次导入。

  • 网络问题
    网络不稳定会导致driver.get()无法成功加载页面,后续等待元素的步骤超时终止程序。检查网络连接状态,或为driver.get()添加超时设置:

    driver.set_page_load_timeout(30)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 13:15:30