在Colab中运行Selenium+ChromeDriver报错,求解决方案
解决Colab中Selenium ChromeDriver启动异常问题
问题核心诊断
你遇到的错误源于几个低级细节问题:
- 驱动路径缺失开头的斜杠(
usr/bin/chromedriver→/usr/bin/chromedriver) - 错误地将
options传递给了ChromeService对象 - 未明确指定Chrome二进制文件路径(Colab环境下需要显式声明)
- 手动安装的ChromeDriver可能与Chromium版本不兼容
修正后的手动安装版本代码
!pip install selenium !pip install webdriver_manager !apt-get update !apt-get install -y chromium-browser !apt-get install -y chromium-chromedriver # 复制驱动到系统路径,避免权限或路径问题 !cp /usr/lib/chromium-browser/chromedriver /usr/bin from selenium import webdriver from selenium.webdriver.chrome.service import Service options = webdriver.ChromeOptions() options.add_argument('--headless') options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') options.add_experimental_option("detach", True) options.add_experimental_option("excludeSwitches", ["enable-automation"]) # 明确指定Chromium二进制文件路径 options.binary_location = '/usr/bin/chromium-browser' # 修正驱动路径,注意开头的斜杠 driver_path = '/usr/bin/chromedriver' serv = Service(driver_path) chrome = webdriver.Chrome(service=serv, options=options) # 测试是否正常启动 chrome.get('https://google.com') print(chrome.title)
更简洁的webdriver_manager自动适配版本
用webdriver_manager可以自动匹配ChromeDriver版本,避免手动安装的版本冲突问题:
!pip install selenium webdriver-manager !apt-get update !apt-get install -y chromium-browser from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from webdriver_manager.core.os_manager import ChromeType options = webdriver.ChromeOptions() options.add_argument('--headless') options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') options.add_experimental_option("detach", True) options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.binary_location = '/usr/bin/chromium-browser' # 自动下载并适配对应版本的ChromeDriver serv = Service(ChromeDriverManager(chrome_type=ChromeType.CHROMIUM).install()) chrome = webdriver.Chrome(service=serv, options=options) # 测试 chrome.get('https://google.com') print(chrome.title)
关键修正点说明
- 路径修正:
/usr/bin/chromedriver是绝对路径,缺少开头斜杠会被识别为相对路径,导致驱动找不到 - ChromeService用法:
ChromeService只需要驱动路径参数,options应仅传递给webdriver.Chrome - 二进制路径指定:Colab中必须显式声明
options.binary_location,否则Selenium可能无法定位到Chromium - 版本适配:手动安装驱动时,复制驱动到
/usr/bin确保权限正常;用webdriver_manager则完全规避版本不兼容问题
内容的提问来源于stack exchange,提问作者sadintern
相关产品推荐
相关产品推荐

