Как с помощью Selenide на Java открыть вторую вкладку с другим сайтом?

Я проверяю регистрацию пользователя на сайте через почту, для чего на одной вкладке я открываю страницу с временной почтой (использую специальный ресурс), а на второй открываю тестируемый сайт. Вопрос простой: как в Selenide открыть новую вкладку. Сразу скажу, что switchTo().window(1) не работает пока нет второй вкладки, что, в общем, логично. Собственно, всё, спасибо за внимание.

'''

    open("http://www.yopmail.com/ru/");
    
    //вот тут надо открыть новую вкладку

    switchTo().window(1); //- не работает: Exception in thread "main" No window found with index: 1

    open("https://www.forumhouse.ru/");

'''

P.S. я самоучусь тестированию, поэтому второстепенный вопрос: я вообще правильно подошёл к проверке регистрации через почту?


Ответы (3 шт):

Автор решения: Денис Кондратов

нашёл два способа: 1 - Selenide открыл 2 вкладки:

   open("http://www.google.com");
    Robot r = null;
    try {
        r = new Robot();
    } catch (AWTException e) {
        e.printStackTrace();
    }
    r.keyPress(KeyEvent.VK_CONTROL);
    r.keyPress(KeyEvent.VK_T);
    r.keyRelease(KeyEvent.VK_CONTROL);
    r.keyRelease(KeyEvent.VK_T);
    switchTo().window(1);
    open("https://yandex.ru/");

2 - Selenium открыл 2 вкладки с помощью JS:

    driver.get("https://yandex.ru");
    JavascriptExecutor jscript = (JavascriptExecutor)driver;
    jscript.executeScript("window.open(\"http://www.google.com\");");

второй, как видно, более лаконичный, но приходится работать с Selenium'ом со всеми вытекающими. Итог как и требуется: в одном окне 2 вкладки, между которыми можно switchTo'пом переключаться. Если есть ещё варианты предлагайте, даже интересно.

→ Ссылка
Автор решения: Andrey Press

Или так:

String url = "/login";

...

Selenide.executeJavaScript("window.open('"+url+"');");

→ Ссылка
Автор решения: Timmy Zi

Открыть новую вкладку в уже открытом браузере:

Selenide.switchTo().newWindow(WindowType.TAB);
Selenide.open(youUrl);

Переключиться обратно на первую вкладку:

Selenide.switchTo().window(0)

Переключиться обратно на вторую вкладку:

Selenide.switchTo().window(1)
→ Ссылка