Atata. C #. Как открыть новую вкладку?

#c# #automated-tests #atata

#c# #автоматизированные тесты #atata

Вопрос:

Как открыть новую вкладку в браузере Chrome?

  • Я могу открыть в начале теста:

               AtataContext.Configure()
                  .UseChrome()
                  .WithArguments("new tab")
      
  • Я попытался нажать сочетания клавиш «CTRL T:

     [PressKeys("control"   "t", TriggerEvents.AfterClick)]
  

или

 .Press("^t");
  

Ответ №1:

Обновление для Atata v2.2

Новые методы были добавлены в Atata v2.2.0 в Go класс:

  • Go.ToNewWindow<TPage>(...)
  • Go.ToNewWindowAsTab<TPage>(...)

Решение для более старой версии Atata

По-видимому, комбинация CTRL T больше не работает для chromedriver. Но мы можем использовать window.open() JavaScript, который также открывает новую вкладку.

 AtataContext.Current.Driver.ExecuteScript("window.open()");

// You also need to switch to newly opened tab.
Go.ToNextWindow<OrdinaryPage>(); // Set the type of your page object instead of OrdinaryPage.
Go.ToUrl("/someurl"); // Set URL.
  

Вы также можете извлечь этот блок кода в метод:

 public static TPage CreateAndSwitchToNewTab<TPage>(string url)
    where TPage : Page<TPage>
{
    AtataContext.Current.Driver.ExecuteScript("window.open()");

    var page = Go.ToNextWindow<TPage>();
    Go.ToUrl(url);

    return page;
}
  

И использовать его в тестах в виде:

 CreateAndSwitchToNewTab<ProductsPage>("/products")
    .PageTitle.Should.Contain("Products");
  

Комментарии:

1. Супер! Большое спасибо!

2. Привет, я понимаю, что Iwebdriver не содержит определения для executeScript

3. Правильно @RohitKumar. Для Atata v2 AtataContext.Current.Driver.ExecuteScript("window.open()"); строка должна быть заменена на AtataContext.Current.Driver.AsScriptExecutor().ExecuteScript("window.open()"); .