Передайте имя пользователя / ключ доступа SauceLabs в класс DriverOptions - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь отправить тесты на селен в соусах, используя класс DriverOptions.В соответствии с этой ссылкой вам нужна конфигурация соуса: параметров, а в соответствии с этой публикацией словаря.Вот мои настройки:

DriverOptions options = new ChromeOptions
{
    PlatformName = "Windows 10",
    BrowserVersion = "latest"
};
IDictionary<string, string> sauceOptions = new Dictionary<string, string>
{
    { "username", SauceUsername },
    { "accessKey", SauceAccessKey },
    { "name", TestContext.TestName },
    { "seleniumVersion", "3.11.0" }
};
options.AddAdditionalCapability("sauce:options", sauceOptions);
_driver = new RemoteWebDriver(new Uri("http://@ondemand.saucelabs.com:80/wd/hub"),
    options.ToCapabilities(), TimeSpan.FromSeconds(600));

Я получаю WebDriverException при инициализации RemoteWebDriver, говоря Misconfigured -- Sauce Labs Authentication Error. You used username 'None' and access key 'None' to authenticate.Это странно, потому что

  1. Мне вернули нужные заглавные буквы, которые я использовал:

    Были получены следующие желаемые возможности: {'browserName': 'chrome', 'browserVersion': 'latest', 'goog: chromeOptions': {'sauce: options': {'accessKey': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXX163edf42', 'name': 'DriverOptionsTest', 'seleniumVersion': '3.11.0', 'username': 'kroe761'}}, 'platformName': 'Windows 10'}

Последние несколько цифр моего ключа доступа верны, и этомое имя пользователя, так ясно, что я отправил правильные учетные данные

Если я удалю словарь и передам имя пользователя и ключ доступа непосредственно в uri RemoteDriver (http://{SauceUsername}:{SauceAccessKey}@ondemand ...), это сработает, однако я не могу передать другие параметры соуса.

Спасибо!

1 Ответ

0 голосов
/ 05 февраля 2019

Используйте перегрузку AddAdditionalCapability, которая принимает три аргумента, а не два.Это указывает экземпляру ChromeOptions добавить словарь на верхний уровень полезной нагрузки JSON, а не как часть свойства goog:chromeOptions.Вот как это будет выглядеть:

// Note, you must use the specific class here, rather than the
// base class, as the base class does not have the proper method
// overload. Also, the UseSpecCompliantProtocol property is required.
ChromeOptions options = new ChromeOptions
{
    PlatformName = "Windows 10",
    BrowserVersion = "latest",
    UseSpecCompliantProtocol = true
};
Dictionary<string, object> sauceOptions = new Dictionary<string, object>
{
    { "username", SauceUsername },
    { "accessKey", SauceAccessKey },
    { "name", TestContext.TestName },
    { "seleniumVersion", "3.11.0" }
};
options.AddAdditionalCapability("sauce:options", sauceOptions, true);
_driver = new RemoteWebDriver(new Uri("http://ondemand.saucelabs.com:80/wd/hub"),
    options.ToCapabilities(), TimeSpan.FromSeconds(600));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...