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

断开远程桌面(RDP)后Selenium Firefox无法正常运行问题

解决RDP断开后Selenium Firefox在谷歌云虚拟机无法工作的问题

核心原因

断开RDP后,Windows虚拟机的桌面会话会被挂起,而默认的Firefox Selenium实例依赖可视化桌面环境执行交互操作(比如点击元素),导致代码执行失败。

可行解决方案

1. 启用Firefox无头模式

这是最直接的方案,让Firefox在无界面环境下运行,完全不依赖桌面会话:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.common.by import By

# 配置无头模式参数
firefox_options = Options()
firefox_options.add_argument("--headless")
firefox_options.add_argument("--disable-gpu")  # 适配部分Windows环境
firefox_options.add_argument("--no-sandbox")    # 云虚拟机环境必备,避免权限问题

# 初始化驱动
driver = webdriver.Firefox(options=firefox_options)

# 你的原有代码
WebDriverWait(driver, 15).until(ec.element_to_be_clickable((By.CSS_SELECTOR,'div.van-key__wrapper:nth-child(9) div:nth-child(1)'))).click()

# 后续操作...
driver.quit()

注意:无头模式下部分页面的渲染逻辑可能和有界面模式略有差异,若元素定位失败,可尝试调整CSS选择器或延长等待时间。

2. 配置系统任务计划维持永久会话

替代bat文件方案,通过Windows任务计划自动维持后台会话:

  • 打开「任务计划程序」,创建基本任务:
    • 触发器:选择「计算机启动时」,确保虚拟机开机就触发
    • 操作:选择「启动程序」,程序路径填C:\Windows\System32\tscon.exe,参数填0 /dest:console(若会话ID不是0,可通过query session命令在CMD中查看当前会话ID)
    • 条件:取消勾选「只有在计算机使用交流电源时才启动此任务」,勾选「唤醒计算机运行此任务」
    • 设置:勾选「如果任务失败,每隔5分钟重试」,确保会话稳定维持
  • 配置完成后,重启虚拟机,断开RDP后会话会在后台保持,Selenium可正常运行。

3. 验证驱动与浏览器版本兼容性

断开RDP后的异常也可能是隐性的版本不兼容问题:

  • 确保geckodriver的版本与Firefox浏览器版本完全匹配
  • 替换虚拟机中现有geckodriver文件后,重新测试代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:31:41