Отношения ChromeOptions и DesiredCapabilities в Selenium и C#
Я искал правильную документацию о том, как использовать ChromeOptions и DesiredCapabilities в атмосфере Selenium и C#, но, поскольку все это с открытым исходным кодом, я только нахожу предложения (и иногда они не помогают). Мой вопрос сегодня заключается в том, как установить правильную связь между ChromeOptions и DesiredCapabilities. Кажется, я все делаю правильно, но все еще получаю System.InvalidOperationException: unknown error:cannot parse capability: chromeOptions from unknown error: unrecognized chrome option:Arguments
Мой код следующий:
private static ChromeOptions Ops()
{
var options = new ChromeOptions();
options.AddArgument("--no-startup-window");
options.BinaryLocation = @"C:\path\path\path\chromedriver.exe";
return options;
}
private static DesiredCapabilities Caps()
{
DesiredCapabilities caps = new DesiredCapabilities();
caps.SetCapability(CapabilityType.BrowserName, "chrome");
caps.SetCapability(ChromeOptions.Capability,Ops().ToCapabilities());
return caps;
}
IWebDriver driver = new RemoteWebDriver(new Uri("http://localhost:4444/wd/hub"), Caps());
Не могу найти место, где проходят некорректные аргументы. Кто-нибудь сталкивался с такими же проблемами? Это ChromeDriver версии 2.28 и Selen WebDriver v 3.3.0, версия браузера Google Chrome - 52.
1 ответ
Вам не нужно устанавливать имя браузера; ChromeOptions делает это для вас.
Согласно этому комментарию
Привязки.NET движутся к шаблону, где DesiredCapabilites не следует использовать напрямую, даже с RemoteWebDriver. Для этого в классе ChromeOptions есть метод ToCapabilities()
И есть этот комментарий
Во многом как --disable-javascript, chromedriver не будет работать, если вы используете --no-startup-window. Необходимо установить окно, чтобы установить соединение с AutomationProxy.
Так что это приводит нас к этому:
var options = new ChromeOptions();
options.BinaryLocation = @"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe";
IWebDriver driver = new RemoteWebDriver(new Uri("http://localhost:4444/wd/hub"), options.ToCapabilities());
Тем не менее, вы на самом деле работает сетка? Если вы тестируете на одной машине, это еще проще:
IWebDriver driver = new ChromeDriver();