You need to enable JavaScript to run this app. 如何在Jupyter Notebook中展示Selenium WebDriver打开的Chrome访问URL
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jupyter Notebook中展示Selenium WebDriver打开的Chrome访问URL

WSL 环境下 Jupyter 运行 Selenium 可视化 Chrome 窗口实操方案

问题核心原因

  • 现有代码强制启用*--headless*无头模式,会完全关闭Chrome的图形渲染能力,从机制上就不可能弹出可见的浏览器窗口
  • 默认安装的WSL是纯命令行架构,没有内置图形显示服务,就算直接删掉--headless参数,Chrome也会因为找不到可输出窗口的显示通道直接启动报错,根本复刻不了本地Spyder的窗口弹出效果

分步实现方案

  1. 打通WSL到Windows的图形渲染通道
    • 在WSL终端安装基础X11依赖:执行sudo apt install x11-xserver-utils
    • 在Windows侧安装本地X Server工具(如VcXsrv),启动时一定要勾选「禁用访问控制」,不然WSL的程序推送的窗口会被权限拦截
    • 给WSL配置指向Windows显示服务的环境变量:打开~/.bashrc配置文件,在末尾追加export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0,执行source ~/.bashrc让配置全局生效,后续WSL内运行的带界面程序,就能把窗口直接推送至Windows桌面显示
  2. 调整Selenium启动参数
    • 直接删除原代码中的--headless启动参数
    • 保留两个WSL环境下Chrome运行必须的兼容参数:--no-sandbox、--disable-dev-shm-usage,缺少这两个参数会触发Chrome权限校验失败、共享内存分配报错,导致启动失败
    • 追加--start-maximized参数,让启动的Chrome窗口直接最大化,对齐本地Spyder代码的运行效果

改造后可直接运行的代码

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

chrome_options = Options()
# 已移除无头模式参数
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--start-maximized')

driver = webdriver.Chrome('/usr/bin/chromedriver', options=chrome_options)
driver.get('https://www.google.nl/')

运行注意事项

  • 执行Selenium代码前,需确认Windows侧的X Server程序已正常启动,且系统防火墙未拦截X Server的本地通信端口,否则窗口无法成功推送
  • 启动Jupyter Notebook的终端需已加载配置好的DISPLAY环境变量,否则仍会触发Chrome找不到显示设备的启动错误
  • 代码正常运行后,Chrome独立窗口会直接弹出在Windows桌面,窗口顶部带有「Chrome正受自动化测试软件控制」的提示条,和本地Spyder运行同逻辑代码的效果完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 02:54:05