Отношения 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();
Другие вопросы по тегам