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

关闭远程桌面连接后AWS服务器上的Selenium脚本运行失败

问题原因

关闭AWS EC2 Windows实例的远程桌面连接后,Windows会将当前交互式会话切换为非交互式会话,桌面UI环境随即暂停,Selenium驱动的浏览器(即使启用无头模式)可能无法正常加载或渲染页面元素,最终导致元素识别失败。Vultr的Windows实例默认保留了交互式会话的后台运行支持,因此未出现该问题。

解决方案

1. 启用浏览器无头模式

确保脚本使用浏览器的无头模式运行,摆脱对交互式桌面会话的依赖。以Chrome为例:

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

chrome_options = Options()
chrome_options.add_argument("--headless=new")  # Chrome 112+版本的新无头模式,渲染逻辑更接近正常浏览器
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--window-size=1920,1080")  # 固定窗口尺寸,避免元素布局异常

driver = webdriver.Chrome(options=chrome_options)
# 后续脚本逻辑

2. 配置Windows保留交互式会话

通过本地组策略修改会话行为,让RDP断开后仍保持会话活跃:

  • 打开gpedit.msc(本地组策略编辑器)
  • 导航至计算机配置 > 管理模板 > Windows组件 > 远程桌面服务 > 远程桌面会话主机 > 会话时间限制
  • 禁用「设置断开连接的会话的时间限制」和「设置活动但空闲的远程桌面服务会话的时间限制」
  • 切换至会话状态选项,设置「当会话断开连接时」为保持会话处于活动状态

3. 用Windows任务计划程序启动脚本

将脚本配置为系统任务,以独立于用户会话的方式运行:

  1. 打开「任务计划程序」,创建新任务
  2. 「常规」选项卡:勾选「不管用户是否登录都要运行」和「使用最高权限运行」
  3. 「触发器」选项卡:设置脚本启动条件(比如立即启动或定时触发)
  4. 「操作」选项卡:选择「启动程序」,程序路径填Python解释器路径(如C:\Python311\python.exe),参数填脚本的完整路径(如"C:\scripts\your_selenium_script.py")
  5. 「设置」选项卡:勾选「如果任务失败,重新启动」,设置合理的重试间隔

4. 检查EC2实例配置

确认EC2实例未启用「停止时终止」等影响会话的设置,重启实例后再应用上述配置,避免残留会话问题。

验证方式

配置完成后启动脚本,断开RDP连接,通过脚本日志(建议用logging模块记录运行状态)确认元素识别是否正常。

内容的提问来源于stack exchange,提问作者S J.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:27:32