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

Windows虚拟机下通过SSH运行Python+Selenium无法打开浏览器问题

解决SSH执行Windows Selenium脚本时浏览器无法启动的问题

核心原因

SSH远程执行的进程默认运行在无桌面的后台会话,而Selenium驱动的浏览器必须依附于有GUI的用户桌面会话才能显示界面——这就是为什么SSH端有输出,但Windows机器上看不到浏览器窗口的原因。

解决方案

1. 用psexec在现有桌面会话中执行脚本

如果Windows虚拟机当前有用户登录(存在桌面会话),可以用Sysinternals的psexec工具强制脚本在该会话中运行:

  • 先通过query session命令查看当前登录用户的会话ID(通常是1)
  • 执行命令:
    psexec -i <会话ID> -d py test2.py
    
    -i指定交互式会话,-d让程序在后台运行,避免SSH会话阻塞。

2. 配置OpenSSH服务允许桌面交互

如果用的是Windows自带的OpenSSH Server:

  1. 打开「服务」管理器,找到OpenSSH SSH Server,右键选择「属性」
  2. 切换到「登录」选项卡,选择「本地系统账户」,勾选允许服务与桌面交互
  3. 重启OpenSSH服务
  4. SSH连接时加上-t参数强制创建交互式会话:
    ssh user@your-win-vm -t "py test2.py"
    

3. 改用浏览器无头模式(无需可视化界面)

如果不需要看到浏览器窗口,直接配置Selenium使用无头模式,这样即使无桌面会话也能正常运行:
以Chrome为例,修改Python脚本:

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

chrome_options = Options()
# 启用无头模式(Chrome 112+ 推荐用new参数)
chrome_options.add_argument("--headless=new")
# 可选:禁用GPU加速,避免无头模式下的兼容性问题
chrome_options.add_argument("--disable-gpu")

# 若驱动路径不在环境变量中,需显式指定
driver = webdriver.Chrome(executable_path=r"C:\tools\chromedriver.exe", options=chrome_options)
driver.get("https://example.com")

# 执行你的操作...
print(driver.title)

driver.quit()

4. 显式指定浏览器驱动路径

SSH会话的环境变量可能和本地用户会话不一致,导致脚本找不到浏览器驱动。在代码中直接写明驱动的绝对路径,避免依赖环境变量。

额外排查点

  • 确认Windows虚拟机当前有用户处于登录状态(有活跃的桌面会话),否则即使允许交互也无法显示浏览器
  • 检查浏览器版本与Selenium驱动版本是否完全匹配,版本不兼容会导致驱动无法启动浏览器

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 12:04:59