在GitHub Codespace运行Python Selenium脚本时Chromedriver报错
解决GitHub Codespace中Selenium ChromeDriver意外退出的问题
问题分析
出现Service chromedriver unexpectedly exited. Status code was: 1通常和版本不匹配、代码写法过时或权限/路径配置错误有关。
解决方案
1. 检查Chromium与ChromeDriver版本一致性
在Codespace终端执行以下命令,确认两者版本号是否完全一致:
chromium-browser --version chromedriver --version
如果版本不一致,需安装与Chromium对应版本的ChromeDriver替换现有文件。
2. 修正Selenium代码写法(适配4.x版本)
旧版初始化Driver的方式已被弃用,改用Service类管理驱动服务,并明确指定Chromium二进制路径:
import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service # 配置Chrome选项 options = webdriver.ChromeOptions() options.add_argument('--headless=new') # 新版无头模式,兼容性更优 options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') options.add_argument('--disable-gpu') options.binary_location = '/usr/bin/chromium-browser' # 指定Chromium安装路径 # 初始化驱动服务并创建Driver实例 service = Service('/usr/bin/chromedriver') driver = webdriver.Chrome(service=service, options=options) # 示例操作 try: driver.get("https://www.google.com") print("页面标题:", driver.title) time.sleep(2) finally: driver.quit() # 确保退出驱动释放资源
3. 确认ChromeDriver执行权限
若驱动文件无执行权限会导致启动失败,执行以下命令检查并修复:
# 查看权限状态 ls -l /usr/bin/chromedriver # 添加执行权限(仅当需要时) sudo chmod +x /usr/bin/chromedriver
4. 使用webdriver-manager自动管理驱动(推荐)
通过webdriver-manager可自动匹配并下载对应版本的ChromeDriver,彻底规避版本不匹配问题:
- 安装依赖包:
pip install webdriver-manager
- 简化后的代码:
import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.options import Options options = Options() options.add_argument('--headless=new') options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') options.binary_location = '/usr/bin/chromium-browser' # 自动下载匹配版本的ChromeDriver driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options) try: driver.get("https://www.google.com") print("页面标题:", driver.title) time.sleep(2) finally: driver.quit()
内容的提问来源于stack exchange,提问作者Andrei Zorin
相关产品推荐
相关产品推荐

