如何在C#中为Aerokube Moon配置Chrome Options?
在Selenium 3 C#中正确配置Aerokube Moon的方法
你的代码核心问题在于使用了dynamic类型的字典,Selenium 3对Capability的类型解析要求严格,dynamic类型会导致配置无法被Moon服务正确序列化解析。以下是修正后的完整配置方案:
正确代码示例
// 1. 用强类型字典定义Moon配置项(避免dynamic导致的序列化问题) var moonOptions = new Dictionary<string, object> { ["enableVideo"] = true, ["enableVNC"] = true, ["videoName"] = $"{testName}.mp4" }; // 2. 配置ChromeOptions并添加Moon专属Capability var chromeOptions = new ChromeOptions(); // 第三个参数设为true,强制覆盖可能存在的同名Capability chromeOptions.AddAdditionalCapability("moon:options", moonOptions, true); // 3. 初始化RemoteWebDriver,连接到Moon的Hub服务 var driver = new RemoteWebDriver( new Uri("http://moon.aerokube.local:4444/wd/hub"), chromeOptions );
关键修正点说明
- 替换dynamic字典:Selenium 3要求Capability的键必须是字符串类型,值为可序列化的对象(如bool、string),使用
Dictionary<string, object>可以确保配置被Moon服务正确解析。 - 强制覆盖Capability:
AddAdditionalCapability的第三个参数设为true,避免与Chrome内置Capability冲突。 - 指定Moon Hub地址:确保RemoteWebDriver连接到Moon的Hub端点(默认端口4444),而非直接访问UI地址。
额外检查项
- 确认测试环境能访问
http://moon.aerokube.local:4444/wd/hub,可通过浏览器访问该地址验证服务可用性。 - 若仍有错误,查看Moon服务的日志,检查是否存在视频存储路径配置错误或权限问题。
内容的提问来源于stack exchange,提问作者smiles
相关产品推荐
相关产品推荐

