如何通过 Chrome 选项将 osVersion 功能传递给 Browserstack

How To Pass osVersion Capability Via Chrome Options To Browserstack

我一直在重构我的测试框架以不使用 DesiredCapabilities,因为它们现在已过时并且无法消除警告。在将选项传递给 BrowserStack 时,我 运行 遇到了一个问题,其中 OS 和 OSVersion 选项没有被设置,除非我将它们作为功能传递。测试仍在 BS 上运行,但它是在一个看似随机的 OS 版本上。

有没有人找到在不触发弃用警告的情况下将这些 DesiredCapabilities 作为选项传递的方法?

我找到了一些来源引用了对 capabilities.ChromeOptions 的修改,但是 os 线程对我来说没有意义,也没有提供有效的解决方案。 Almost 搜索到的所有内容只是将它们与调用驱动程序时输入 chromeoptions 的所需功能一起构建,但这仍然会引发弃用警告。感谢任何帮助。

编辑: BS 推荐这样做,我已经尝试过并且得到报告的结果.. 似乎 os 和 os必须通过 desiredcapabilities 传入版本:

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("browserName", "Chrome");
capabilities.setCapability("browserVersion", "76.0");
Dictionary<string, object> browserstackOptions = new Dictionary<string, object>();
browserstackOptions.Add("os", "Windows");
browserstackOptions.Add("osVersion", "10");
browserstackOptions.Add("resolution", "1920x1080");
browserstackOptions.Add("local", "false");
browserstackOptions.Add("seleniumVersion", "3.5.2");
browserstackOptions.Add("userName", "USERNAME");
browserstackOptions.Add("accessKey", "ACCESS_KEY");
capabilities.setCapability("bstack:options", browserstackOptions);

它正在获取正确的浏览器和浏览器版本,但无法 select 所需的 os 和 os 版本(如果它们未作为 DC 传递)。

您可以使用浏览器特定选项传递 OS 和 OS 版本功能,如下所示-

ChromeOptions options = new ChromeOptions();

options.AddAdditionalCapability("osVersion", "Sierra", true);
options.AddAdditionalCapability("os", "OS X", true);
options.AddAdditionalCapability("browser_version", "67", true);

driver = new RemoteWebDriver(new Uri("http://<your_username>:<your_access_key>@hub-cloud.browserstack.com/wd/hub/"),options.ToCapabilities());

有关更多示例,您可以参考此处提供的示例 - https://github.com/abhi291096/CSharp314

请查看他们的 capability generator 了解更多详情。