Как я могу выполнить вход в систему через ATATA

#c# #selenium #atata

#c# #селен #atata

Вопрос:

В Selenium предполагается, что следующий код приведет вас к оповещению. В частности, всплывающее окно входа в систему:

 Alert alert = driver.switchTo().alert();
 

Как это работает с использованием Atata?

Ответ №1:

В Atata вы можете попытаться сделать то же самое, обратившись к экземпляру драйвера напрямую через AtataContext.Current.Driver :

 AtataContext.Current.Driver.SwitchTo().Alert().SetAuthenticationCredentials("username", "password");
 

Но функциональность этого WebDriver, похоже, не работает в большинстве современных браузеров.

Другой подход заключается в передаче учетных данных внутри URL в виде https://user:pass@example.com/ . Недавно протестировано в Chrome.

Чтобы сделать это с помощью Atata, вы можете установить базовый URL Atata как "https://example.com/" . Затем добавьте где-нибудь следующий метод (например, в базовом классе fixture):

 public static void ApplyBasicAuth(string username, string password)
{
    Uri currentBaseUri = new Uri(AtataContext.Current.BaseUrl);

    if (!string.IsNullOrEmpty(currentBaseUri.UserInfo))
        AtataContext.Current.RestartDriver();

    UriBuilder uriBuilder = new UriBuilder(currentBaseUri)
    {
        UserName = username,
        Password = password
    };

    AtataContext.Current.BaseUrl = uriBuilder.ToString();
}
 

Этот метод вводит учетные данные в базовый URL.

Затем в тесте вызовите его в качестве первого действия компоновки:

 [Test]
public void Test()
{
    ApplyBasicAuth("atuser", "atpass");

    Go.To<OrdinaryPage>();
    // ...
}