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

如何通过SSH在树莓派上运行非无头模式Chromedriver?

解决树莓派SSH运行Selenium+Chromedriver超时问题

你的判断没错——SSH会话默认没有X11图形环境,而Chrome默认依赖图形界面运行,VNC因为模拟了桌面环境所以能正常执行。下面是两种直接可行的解决办法:

方法一:启用Chrome无头模式(推荐)

直接让Chrome在无图形界面下运行,不需要依赖任何虚拟显示,是最轻量化的方案。只需在Selenium配置里添加无头相关参数:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
# 新版无头模式(Chrome 112+),行为更接近正常Chrome,兼容性更好
chrome_options.add_argument('--headless=new')
# 禁用GPU加速(树莓派没必要,还能避免潜在报错)
chrome_options.add_argument('--disable-gpu')
# 绕过沙箱限制(SSH非交互式环境下可能需要)
chrome_options.add_argument('--no-sandbox')
# 设置固定窗口大小,避免页面元素定位异常
chrome_options.add_argument('--window-size=1920x1080')

# 初始化driver
driver = webdriver.Chrome(options=chrome_options)

# 后续业务代码...
driver.get("https://example.com")
print(driver.title)

driver.quit()

方法二:配置虚拟显示(Xvfb)

如果某些页面必须依赖有头模式运行,可以用Xvfb创建一个虚拟的图形界面:

  1. 先安装依赖工具:
sudo apt update && sudo apt install xvfb
pip install pyvirtualdisplay
  1. 修改Python脚本,在启动Chrome前启动虚拟显示:
from selenium import webdriver
from pyvirtualdisplay import Display

# 创建虚拟显示(visible=0表示隐藏窗口)
display = Display(visible=0, size=(1920, 1080))
display.start()

# 正常初始化Chrome即可
driver = webdriver.Chrome()

# 后续业务代码...
driver.get("https://example.com")
print(driver.title)

# 记得关闭资源
driver.quit()
display.stop()

如果不想修改代码,也可以直接用Xvfb包裹脚本执行:

xvfb-run python your_script.py

额外注意事项

  • 确保Chromedriver版本和Chrome浏览器版本完全匹配,版本不兼容是静默超时的常见原因
  • 树莓派性能有限,可以适当延长Selenium的超时时间,比如driver.set_page_load_timeout(30)
  • 检查SSH会话的权限,避免因为权限不足导致Chrome无法启动

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 13:24:59