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

Databricks中Chrome/Firefox WebDriver异常问题求助

解决Databricks集群中Selenium的WebDriver异常问题

Chrome方案修复

原问题核心原因

你的Chrome代码存在两个致命问题:

  • binary_location错误指向了chromedriver,而非Chrome浏览器的二进制文件
  • 无头模式下缺少适配集群环境的必要参数,导致无法创建DevToolsActivePort文件

修正后的代码

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

# 配置Chrome无头模式及集群适配参数
chrome_options = Options()
chrome_options.add_argument("--headless=new")  # 新版无头模式,兼容性更强
chrome_options.add_argument("--no-sandbox")    # 禁用沙箱,适配Databricks集群的受限环境
chrome_options.add_argument("--disable-dev-shm-usage")  # 避免/dev/shm空间不足导致崩溃
chrome_options.add_argument("--remote-debugging-port=9222")  # 强制指定调试端口,解决DevToolsActivePort缺失问题
chrome_options.binary_location = "/usr/bin/google-chrome"  # 指向Chrome浏览器二进制文件(Databricks默认路径,可通过`%sh which google-chrome`确认)

# 使用Service对象管理驱动,自动匹配版本
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service, options=chrome_options)

print(driver.service.process.path)
driver.quit()  # 务必关闭驱动释放集群资源

关键修复说明

  • 修正binary_location路径为Chrome浏览器的实际位置,而非chromedriver
  • 添加--no-sandbox和--disable-dev-shm-usage适配集群的安全限制与资源环境
  • 用WebDriverManager自动同步Chrome与chromedriver版本,彻底避免版本不兼容问题

Firefox方案修复

原问题核心原因

你的Firefox代码问题:

  • geckodriver版本过旧(v0.24.0),与新版Firefox完全不兼容
  • 仍在使用已弃用的executable_path参数
  • 缺少集群环境必需的适配参数

修正后的步骤与代码

1. 安装兼容版本的Firefox和geckodriver

# 更新系统源并安装最新稳定版Firefox
sudo apt update && sudo apt install -y firefox

# 下载与当前Firefox兼容的geckodriver(示例为v0.33.0,适配Firefox 115+,可根据`%sh firefox --version`调整)
wget https://github.com/mozilla/geckodriver/releases/download/v0.33.0/geckodriver-v0.33.0-linux64.tar.gz -O /tmp/geckodriver.tar.gz
tar -xzf /tmp/geckodriver.tar.gz -C /tmp
chmod +x /tmp/geckodriver  # 赋予驱动执行权限

2. 修正后的Python代码

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.firefox.service import Service

# 配置Firefox无头模式及集群适配参数
firefox_options = Options()
firefox_options.add_argument("--headless")
firefox_options.add_argument("--no-sandbox")
firefox_options.add_argument("--disable-dev-shm-usage")

# 使用Service对象管理驱动,替代已弃用的executable_path
service = Service(executable_path="/tmp/geckodriver")
driver = webdriver.Firefox(service=service, options=firefox_options)

# 测试示例
print(driver.title)
driver.quit()

关键修复说明

  • 升级geckodriver到与Firefox匹配的版本,版本对应关系可通过geckodriver官方说明确认
  • 用Service对象替代executable_path,消除弃用警告同时规范驱动管理
  • 添加集群环境必需的参数,避免权限或资源不足导致的驱动崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 06:52:46