Тайм-аут Selenium Driver истек во время невозможности принять окно аутентификации оповещения - PullRequest
0 голосов
/ 04 июля 2018

Я использую селен вебдрайвер с языком Java. Я использую простой метод get, чтобы открыть URL. Этот URL показывает мне окно аутентификации оповещения, но это оповещение блокирует загрузку страницы. Мой метод get генерирует исключение тайм-аута и закрывает страницу, я не могу выполнить какую-либо строку кода во время этого метода get. Я не могу обработать это окно аутентификации оповещения.

Есть ли способ справиться с этим? Спасибо

Мой код:

driver = new ChromeDriver(capabilities);
app = new EventFiringWebDriver(driver);
seleniumEvent handler = new seleniumEvent();
app.register(handler);
app.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
app.manage().timeouts().pageLoadTimeout(10,TimeUnit.SECONDS);
wait = new WebDriverWait(app, 60);


app.get(URL_1);

Я получил исключение TimeOut от app.get(URL_1);

Ответы [ 3 ]

0 голосов
/ 04 июля 2018

Вы можете сослаться на это,

try {
      app.get(URL_1);
    } catch (Exception e) {
        WebDriverWait wait = new WebDriverWait(driver, 20);
        wait.until(ExpectedConditions.alertIsPresent());
        Alert alert = webDriver.switchTo().alert();
        alert.accept();
    }

Он будет обрабатывать оповещение в блоке Catch, если веб-страница получит оповещение при его открытии.

0 голосов
/ 04 июля 2018

, чтобы закрыть окно аутентификации оповещения, вам необходимо войти на сервер, оно называется Базовая аутентификация. информация из вики:

URL-кодировка

Клиент может избежать запроса входа в систему при доступе к аутентификации базового доступа, добавив имя пользователя: пароль @ к имени хоста в URL. Например, следующее будет обращаться к странице index.html на веб-сайте www.example.com с защищенным протоколом HTTPS и предоставлять имя пользователя Aladdin и пароль OpenSesame с использованием базовой авторизации:

https://Aladdin:OpenSesame@www.example.com/index.html

так что вы можете сделать так:

try {
        driver.get("https://" + userName + ":" + password + "@" + YOUR_URL.split("https://")[1]);
    } catch (UnsupportedCommandException e) {
        LOGGER.error("Can't login to server occur error!!!", e);
    }
0 голосов
/ 04 июля 2018

Попробуйте это:

  public class A {

    public static void main(String[] args) {
        WebDriver driver = new ChromeDriver();
        driver.get("url here");
        WebDriverWait wait = new WebDriverWait(driver, 10);
        try {
            if (wait.until(ExpectedConditions.alertIsPresent()) != null) {
                driver.switchTo().alert().dismiss();
            }
        } catch (TimeoutException e) {

        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...