You need to enable JavaScript to run this app. 如何配置Azure DevOps自托管代理以支持任意用户RDP查看运行中的Selenium UI测试
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Azure DevOps自托管代理以支持任意用户RDP查看运行中的Selenium UI测试

核心问题成因

当前固定以USER1身份运行的交互代理,会把所有Selenium进程、浏览器实例都绑定在USER1专属的Windows交互式桌面会话中。受Windows系统的会话隔离机制限制,只有RDP直接登录到USER1本身的会话时,才能看到该会话内运行的GUI程序;其他用户RDP登录后会进入独立的全新会话,天然无法跨会话查看其他用户桌面下的运行进程,这也是USER2触发管道却看不到测试界面的根本原因。

适配多用户查看需求的配置方案
  • 调整自托管代理的运行模式,放弃单固定用户常驻代理的配置逻辑,为所有需要查看测试的用户配置独立的、和自身会话绑定的专属代理
    具体操作:
    1. 卸载当前绑定USER1身份的常驻Windows服务代理,原有代理工作目录可保留,无需重新下载安装包
    2. 让USER1、USER2、USER3分别通过RDP登录代理机器,进入自身的专属交互式桌面
    3. 在每个用户的会话内执行代理配置命令./config.sh,按流程关联对应的Azure DevOps组织、项目代理队列;配置环节选择以交互模式运行代理,且每个用户的代理设置唯一的、带身份标识的名称(如agent-user1、agent-user2),避免同队列下的代理名称冲突
    4. 给每个用户会话内的交互代理配置会话自启动:在每个用户的Windows启动目录(执行shell:startup可快速打开)放入代理启动脚本./run.cmd的快捷方式,保证只要该用户RDP登录进入交互桌面,对应绑定该用户的代理就会自动拉起
  • 配置管道的任务分配逻辑,保证触发管道的用户能被匹配到自身对应的代理上
    具体操作:
    1. 在Azure DevOps代理队列设置中,给每个绑定对应用户的代理打上专属标签,比如给user1的代理标记test-runner-user1标签,user2的代理标记test-runner-user2标签,依次类推
    2. 管道的代理作业配置中,利用内置预定义变量Build.RequestedFor获取当前触发管道的用户身份,动态匹配对应的代理标签筛选规则,保证任务只会被对应用户绑定的代理拾取
    3. 任务被匹配到对应用户的代理后,Selenium启动的浏览器进程会直接运行在该用户的交互式会话内,当用户自己RDP登录到机器时,就能直接看到正在运行的测试界面
  • 调整系统会话策略,避免会话异常终止
    具体操作:
    1. 在代理机器的本地组策略中,设置RDP会话断开后保持运行、不自动注销,配置路径为计算机配置 > 管理模板 > Windows组件 > 远程桌面服务 > 远程桌面会话主机 > 会话时间限制 > 设置已断开会话的时间限制,将参数值设为“永不”
    2. 配置每个用户的本地电源选项为“接通电源时永不关闭屏幕、永不进入睡眠”,避免系统休眠导致交互会话挂起、测试界面不可见
配置注意事项
  • 不要尝试将所有代理进程统一放到公共会话中运行,Windows的多会话隔离机制不支持跨用户会话的GUI程序可见,强行调整权限反而会引发会话权限混乱
  • 每个用户的代理必须和自身会话强绑定:如果用户主动从RDP断开并执行注销操作,该会话内的所有代理、Selenium进程都会被系统终止;只有保持会话为“断开连接”状态而非注销状态,才能持续承接测试任务
  • 同代理队列下的所有代理不能使用重复名称,否则会出现代理在线状态冲突、任务被错误拾取的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 19:06:00