При ожидании алерта появляется ошибка о его отсутствии

Проблема (Вопрос) заключается в том, что я открываю сайт, на котором кликаю по линке и попадаю на страницу с всплывающим алертом, далее пытаюсь на него переключиться, но появляется ошибка, что алерта нет:

org.openqa.selenium.TimeoutException: Expected condition failed: waiting for alert to be present (tried for 20 second(s) with 500 milliseconds interval)

Мой код:

import io.github.bonigarcia.wdm.WebDriverManager;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.time.Duration;

public class AuthTemp {

protected static WebDriver driver;
private Logger logger = LogManager.getLogger(sampleTest.class);

public Alert alert;

@BeforeEach
public void setUp() {
    WebDriverManager.chromedriver().setup();
    driver = new ChromeDriver();
    logger.info("Driver is initialized");
}


@Test
public void successAuthTest() {

    driver.get("https://the-internet.herokuapp.com/");
    WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(20));
    WebElement link = driver.findElement(By.xpath("//a[@href='/basic_auth']"));
    link.click();
     wait.until(ExpectedConditions.alertIsPresent());
    alert = driver.switchTo().alert();
    alert.sendKeys("admin");
    alert.sendKeys(String.valueOf(Keys.TAB));
    alert.sendKeys("admin"+ Keys.ENTER);
    alert.accept();
}

}

У меня получилось только таким методом:
@Test
public void successAuthTest1() {
driver.get(“https://”+“admin”+“:”+“admin”+“@”+“the-internet.herokuapp.com/basic_auth”);
}

Но у меня стоит задача именно перейти с главной страницы на страницу с алертом.

диалог аудентикации это не алерт и его не получится таким образом ждать

@sergueik
Благодарю за информацию, решил вопрос, сделав отдельный метод перехода, с помощью интерфейса HasAuthentication:

public void successAuthTest() {
HasAuthentication authentication = (HasAuthentication) driver;
authentication.register(()->new UsernameAndPassword(“admin”,“admin”));
driver.get(“https://the-internet.herokuapp.com/basic_auth”);
}

спасибо большое за информацию об адаптере
это селениум 4
у него есть несколько способов передать заголовки

вот линк

у меня был демо код проект добавлю ваш пример

1 Like