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

AWS Run-Command远程EC2运行C#/Selenium/NUnit测试异常

这种跨环境的执行问题我碰过不少,核心差异就在AWS Run Command的执行上下文和手动登录会话完全不同上,给你梳理几个大概率的排查方向和解决办法:

1. 执行账户的权限与桌面会话限制

AWS Run Command默认用的是ssm-user(或者系统内置的Local System账户,取决于你的SSM Agent配置),这个账户和你手动登录EC2用的账户有两个关键区别:

  • 没有桌面交互权限:Selenium启动浏览器需要桌面会话,而Run Command默认是无桌面的后台执行,直接启动浏览器会报错。
  • 权限范围不同:可能没有访问测试依赖文件(比如浏览器驱动、测试资源)的权限,或者环境变量里没包含工具路径。

解决办法:

  • 给Selenium启用无头模式:在你的C#测试代码里配置浏览器的无头参数,以Chrome为例:
    var chromeOptions = new ChromeOptions();
    chromeOptions.AddArgument("--headless=new"); // 新版Chrome的无头模式
    chromeOptions.AddArgument("--disable-gpu");
    chromeOptions.AddArgument("--no-sandbox"); // 避免权限问题
    using var driver = new ChromeDriver(chromeOptions);
    
  • 如果必须用有桌面的模式,可以配置SSM Agent以交互式用户运行,或者在Run Command里调用psexec来启动带桌面的会话(不过这个方案比较复杂,优先推荐无头模式)。

2. 环境变量与路径缺失

手动登录时,你的用户环境变量(比如PATH里包含了NUnit、ChromeDriver的路径)在Run Command的会话里是不存在的,它只会加载系统级的环境变量。这会导致找不到测试工具或者依赖组件。

解决办法:
在你的.bat脚本开头显式设置需要的环境变量,或者用绝对路径调用所有工具:

:: 切换到测试项目根目录
cd C:\your-test-project-folder

:: 显式添加工具路径到PATH
set PATH=%PATH%;C:\Program Files\NUnit.org\nunit-console;C:\drivers\chromedriver

:: 用绝对路径执行测试
"C:\Program Files\NUnit.org\nunit-console\nunit3-console.exe" YourTestAssembly.dll

3. 工作目录不匹配

Run Command默认的工作目录是SSM Agent的安装目录(比如C:\Program Files\Amazon\SSM),而不是你的测试项目目录,这会导致测试找不到依赖的配置文件、资源,或者生成的TestResult.xml不在预期路径。

解决办法:
在.bat脚本的第一行就切换到测试项目的绝对路径,比如:

cd /d C:\path\to\your-test-project
:: 然后再执行测试命令

4. 日志捕获不全导致无法定位错误

Run Command的默认输出可能只捕获到测试失败的结果,没拿到具体的错误信息(比如Selenium启动失败的原因、NUnit找不到测试用例的提示)。

解决办法:
在.bat脚本里把测试的输出重定向到日志文件,然后在PowerShell脚本里先读取这个日志文件,再解析TestResult.xml:

:: 执行测试并输出详细日志到文件
nunit3-console.exe YourTestAssembly.dll > test-execution.log 2>&1

:: 检查日志是否有错误,再继续后续步骤
if %errorlevel% neq 0 (
    echo Test execution failed, check test-execution.log for details
    exit /b 1
)

之后在PowerShell脚本里可以把test-execution.log的内容上传到Bamboo的构建日志里,方便你排查具体错误。

快速排查步骤总结

  1. 先给测试加上详细日志,拿到具体的失败原因;
  2. 检查Run Command的执行账户是否有足够权限;
  3. 确认脚本里用了绝对路径或者显式设置了环境变量;
  4. 切换到正确的工作目录;
  5. 给Selenium启用无头模式(如果是UI测试)。

内容的提问来源于stack exchange,提问作者J-Roel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:50:16