错误:mobileEmulation功能已经有一个选项。请改用它。参数名称:capabilityName

时间:2016-01-28 13:49:37

标签: c# selenium-webdriver selenium-chromedriver

我已将Selenium Webdriver C#更新到版本2.50.0,不幸的是我还将ChromeDriver更新为版本2.21,然后我遇到了问题。我倾向于认为它与ChromeDriver的新版本有关,但我也不确定新版本的Selenium。

我使用下一段代码来运行移动仿真:

var mobileEmulation = new Dictionary<string, string>
{
     {"deviceName", device}
};

ChromeOptions options = new ChromeOptions();
options.AddAdditionalCapability("mobileEmulation", mobileEmulation);

这很有效。

现在在下一个字符串上:

options.AddAdditionalCapability("mobileEmulation", mobileEmulation);

它向我显示了下一个错误:

  

mobileEmulation功能已经有了一个选项。请   用它代替。参数名称:capabilityName

那么我该怎么用作这个方法的第一个参数呢?

2 个答案:

答案 0 :(得分:5)

这里要做的正确的事情是在EnableMobileEmulation对象上使用ChromeOptions方法。有两个重载。第一个重载采用字符串,该字符串旨在与设备名称一起使用。第二个重载采用ChromeMobileEmulationDeviceSettings对象,您可以在其上设置高度,宽度和像素比。此方法允许使用类型安全参数,并允许您正确设置mobileEmulation功能。代码看起来像这样:

// Assumes deviceName is a string variable containing the name
// of the device to emulate.
ChromeOptions options = new ChromeOptions();
options.EnableMobileEmulation(deviceName);

注意:此答案涉及.NET绑定的2.50.1版本,该版本更正了此区域中的API。

答案 1 :(得分:2)

这项检查是在不到一天前在Selenium 2.50中添加的:

https://github.com/SeleniumHQ/selenium/commit/6db8a5fd2bf8a1fc89d41467d1f21d073ffadfe0

我没有找到任何文档,但似乎您需要使用新的类型安全ChromeMobileEmulationDeviceSettings类来设置移动模拟选项。希望从上面的差异中可以清楚地知道你需要改变什么。