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

Python Selenium Grid节点可正常获取页面但无法启动显示Chrome浏览器

问题解决思路

根本原因

你启动Selenium Hub和Node节点时使用了xvfb-run命令,该工具的作用是创建虚拟X11显示缓冲区,所有GUI程序(包含Chrome浏览器)的图形输出都会被渲染到这个虚拟显示区域,不会输出到设备的物理显示器上。这就是你没有配置headless参数也看不到Chrome窗口的核心原因。

可选解决方案

  • 方案1:直接移除xvfb-run前缀启动服务
    如果你运行Selenium服务的Linux设备已经安装了图形桌面环境,直接去掉启动命令中的xvfb-run -a前缀,用原生java命令启动Hub和Node即可:
    # 启动Hub
    java -Dwebdriver.chrome.driver=/usr/bin/chromedriver -jar selenium-server-standalone.jar -role hub
    
    # 启动Node
    java -Dwebdriver.chrome.driver=/usr/bin/chromedriver -jar selenium-server-standalone.jar -port 7777 -role node -hub http://192.168.111.253:4444/grid/register -browser browserName="chrome",version=ANY,platform=LINUX,maxInstances=5
    
    启动前先在终端执行echo $DISPLAY确认图形显示变量已配置,正常桌面环境下默认值为:0,如果返回为空可以先执行export DISPLAY=:0再启动服务。
  • 方案2:保留xvfb的前提下查看虚拟窗口内容
    如果你的服务部署在无图形桌面的服务器上必须使用xvfb,可以通过VNC工具查看虚拟缓冲区中的窗口:
    1. 启动xvfb时增加VNC相关参数:
      xvfb-run -a -s "-screen 0 1024x768x16 +extension RANDR +extension RENDER +extension GLX" java -jar selenium-server-standalone.jar xxx
      
    2. 安装x11vnc后绑定对应DISPLAY端口启动VNC服务,用任意VNC客户端连接即可看到Chrome窗口。
  • 方案3:前置环境校验
    先在Selenium服务运行的设备本地终端直接执行google-chrome命令,确认可以正常弹出浏览器窗口。如果本地执行都无法弹出窗口,先排查系统图形环境、DISPLAY变量配置问题,再调试Selenium相关配置。

注意:Chrome窗口只会显示在Selenium Node运行的设备的物理显示器上,不会显示在你访问Jupyter Notebook的局域网其他设备上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:54:02