Блог вебразработчика
  • ГЛАВНАЯ
  • ПОДПИСКА

Selenium Driver работа c диалогами (alert)

Июл09
2012
Написал Tatyana

Selenium Driver располагает встроенными средствами для работы с диалоговыми окнами. Получить доступ к появившемуся диалоговому окну можно следующим образом.

Этот код вернет объект, соответствующий модальному диалогу, открытому на экране в данный момент:

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

Alert можно успешно использовать для диалогов alert, confirm и prompt.

Интерфейс Alert предоставляет следующие методы для работы с диалоговым окном:

  • void accept() — соответствует нажатию кнопки OK.
  • void dismiss() — соответствует нажатию кнопки Cancel или клавиши Esc.
  • java.lang.String getText() — возвращает текст диалогового окна. Интересно, что текст возвращается даже для уже закрытого диалога.
  • void sendKeys(java.lang.String keysToSend) — позволяет передать текст в поле ввода диалога.

Если вы попытаетесь перехватить диалоговое окно, которого нет, то получите исключение NoAlertPresentException. Поэтому если вы не уверены в появлении алерта на странице, будьте готовы перехватить исключение:

protected void safeAlertDissmiss() {
	try {
	     driver.switchTo().alert().dismiss();
	} catch (NoAlertPresentException e) {
	     // ничего не делаем, алерта итак нет
	}
}

Безопасно дождаться появления алерта на странице можно используя готовые функции класса ExpectedConditions:

import org.openqa.selenium.Alert;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

WebDriver driver = new FirefoxDriver();
Alert alert = (new WebDriverWait(driver, 10))
                  .until(ExpectedConditions.alertIsPresent());
  • Нравится
  • Tweet

Опубликовано в Selenium - Помечено Alert, ExpectedConditions, Selenium WebDriver, switchTo
Рассказать всем Twitter Facebook Delicious StumbleUpon E-Mail
← Введение в XPath (часть 4). Советы
Selenium Driver: выпадающий список (select) →

8 комментариев

  1. Виталий's Gravatar Виталий
    25.10.2012 at 13:09 | Permalink

    Большое спасибо!!! Хоть кто-то написал по человечески!! В 2 строчки и все работает!!! Большое спасибо!

  2. Elena's Gravatar Elena
    21.06.2013 at 09:31 | Permalink

    Спасибо большое за статью! Мегополезная работа, все ясно и понятно!

  3. Sergey's Gravatar Sergey
    09.08.2013 at 12:05 | Permalink

    Здравствуйте. Спасибо за статью.
    У меня возникла проблема с алертом. Драйвер выдал ошибку: «org.openqa.selenium.UnhandledAlertException … «. Алерт был показан, но драйвер не смог ни чего с ним сделать. Не подскажите как найти выход из проблемы?

    • Tatyana's Gravatar Tatyana
      09.08.2013 at 17:33 | Permalink

      Добрый день, пришлите, пожалуйста, код, который вызывает алерт и код, которым Вы пытаетесь его обработать.
      Судя по ошибке алерт появляется раньше, чем Вы его обрабатываете.

      • Sergey's Gravatar Sergey
        12.08.2013 at 20:11 | Permalink

        В тесте выполняется следующий метод:
        protected void fillAuthorizationForm(UserProperties user){
        typeText(By.name(«userLogin»), user.login);
        typeText(By.name(«userPassword»), user.password);
        typeText(By.name(«verificationCod»), user.verificationCod);
        clickElement(By.className(«SubmitButton»));
        }
        Алерт появляется после того как пользователь кликнет SubmitButton в случае неверных данных, внесенных в форму.

        Алерт я обрабатываю следующим способом:
        1) проверяю может драйвер подключится к алерту или нет
        protected boolean isAlertPresent(){
        try {
        driver.switchTo().alert();
        return true;
        } catch (NoAlertPresentException e) {
        return false;
        }
        }
        2) метод isAlertPresent() я использую в методе обработки алерта (этот метод я вызываю в тесте сразу после fillAuthorizationForm() )
        protected void closeAlert() {
        Boolean result = isAlertPresent();
        if (result){
        Alert alert = driver.switchTo().alert();
        alert.accept();
        } else {
        getError(«Dialog cannot be found»);
        }
        }
        Надеюсь расписал более менее понятно 🙂

        • Tatyana's Gravatar Tatyana
          14.08.2013 at 19:44 | Permalink

          Думаю проблема в том, что в вашем коде дважды вызывается driver.switchTo().alert();, Вы уже итак переключены на алерт после проверки.

  4. Andrey's Gravatar Andrey
    20.05.2014 at 12:07 | Permalink

    Добрый день, снова потребовалась ваша помощь=)
    В приложении при нажатии на кнопку открывается новое окно браузера, с формой для печати. И в этом новом окне сразу активно диалоговое окно с настройками печати (выбро принтера, числом копий и т.п.)
    Правильно ли я понимаю, что это диалоговое окно WebDriver’ом восприниматься не будет, и я не смогу с ним взаимодействовать?

    • Tatyana's Gravatar Tatyana
      20.05.2014 at 13:24 | Permalink

      Добрый день,
      По большому счету да, драйвер не работает с такими окнами.
      Но в частности это зависит от браузера: в Firefox открывается диалоговое окно операционной системы (можно использовать AutoIt), а вот в Chrome это просто часть HTML страницы и с ней можно продолжить работать драйвером

  1. Selenium WebDriver работа с окнами — Блог вебразработчика on 01.08.2012 at 09:46

Свежие записи

  • WebDriver и SSL Untrusted certificate
  • Видеозапись выполнения тестов Selenium
  • Selenium WebDriver: basic авторизация
  • BrowserMob Proxy + Selenium: автоматизация сбора данных о производительности
  • Hibernate 4: UserType пользовательский тип данных (часть 2)

Поиск

Рубрики

  • Hibernate ORM
  • SEO
  • Разное
  • Тестирование
    • JUnit
    • Selenium
    • Thucydides

Метки

Actions AJAX Alert AutoIt ChromeDriver Exceptions ExpectedConditions FindElement FirefoxDriver Hibernate InternetExplorerDriver Java Javascript Jenkins JUnit4 Maven PageFactory Page Object RemoteWebDriver Select Selenium IDE Selenium Server Selenium WebDriver switchTo Thucydides WebDriverWait XPath Автоматизированное тестирование база данных заработок в сети сеть Интернет скорость продвижения сайта статейное продвижение услуги продвижения

Реклама


Donec in mi a arcu cursus commodo non ut metus. Nunc id eros ut augue consequat tempus ut non ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer pretium, erat sit amet scelerisque euismod, purus lectus convallis dui, eget imperdiet sapien est ut magna. Nullam elementum, tortor vitae pulvinar mattis, orci neque porta tortor, a feugiat nisi lacus quis diam. Ut gravida augue id est rutrum elementum. Mauris eget felis dolor. Phasellus ante ante, porttitor sit amet lobortis ut, suscipit id neque. Fusce hendrerit dolor nec odio eleifend in auctor enim cursus. Nullam fermentum pretium risus, in hendrerit nulla cursus sit amet. Fusce eu tempus elit. Ut tortor velit, aliquam in ornare vel, feugiat sed nibh. Donec fringilla est id odio lacinia vulputate. Donec nulla urna, congue sit amet pretium non, dictum at orci. Fusce neque sem, fermentum eu tempus nec, mattis venenatis sem. Proin scelerisque velit tristique urna mattis adipiscing. Proin mattis faucibus facilisis. Integer non lacus ac ligula accumsan convallis quis molestie erat. Curabitur imperdiet vestibulum vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris lacus ligula, hendrerit eget suscipit in, sollicitudin nec dui. Suspendisse euismod, lorem pretium gravida rhoncus, enim quam facilisis orci, nec volutpat nisi dolor id lacus. Proin dolor arcu, rutrum eget hendrerit vel, pharetra id elit. Nullam porta euismod suscipit. Pellentesque malesuada consequat sem, et auctor magna aliquam gravida. Nullam blandit dignissim iaculis. Suspendisse non diam nec augue scelerisque iaculis. Nam id dui sed lorem vulputate rhoncus eget eu tellus. In sit amet nisi nunc. Fusce sed aliquet sem. Aliquam sit amet metus metus.
Donec in mi a arcu cursus commodo non ut metus. Nunc id eros ut augue consequat tempus ut non ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer pretium, erat sit amet scelerisque euismod, purus lectus convallis dui, eget imperdiet sapien est ut magna. Nullam elementum, tortor vitae pulvinar mattis, orci neque porta tortor, a feugiat nisi lacus quis diam. Ut gravida augue id est rutrum elementum. Mauris eget felis dolor. Phasellus ante ante, porttitor sit amet lobortis ut, suscipit id neque. Fusce hendrerit dolor nec odio eleifend in auctor enim cursus. Nullam fermentum pretium risus, in hendrerit nulla cursus sit amet. Fusce eu tempus elit. Ut tortor velit, aliquam in ornare vel, feugiat sed nibh. Donec fringilla est id odio lacinia vulputate. Donec nulla urna, congue sit amet pretium non, dictum at orci. Fusce neque sem, fermentum eu tempus nec, mattis venenatis sem. Proin scelerisque velit tristique urna mattis adipiscing. Proin mattis faucibus facilisis. Integer non lacus ac ligula accumsan convallis quis molestie erat. Curabitur imperdiet vestibulum vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris lacus ligula, hendrerit eget suscipit in, sollicitudin nec dui. Suspendisse euismod, lorem pretium gravida rhoncus, enim quam facilisis orci, nec volutpat nisi dolor id lacus. Proin dolor arcu, rutrum eget hendrerit vel, pharetra id elit. Nullam porta euismod suscipit. Pellentesque malesuada consequat sem, et auctor magna aliquam gravida. Nullam blandit dignissim iaculis. Suspendisse non diam nec augue scelerisque iaculis. Nam id dui sed lorem vulputate rhoncus eget eu tellus. In sit amet nisi nunc. Fusce sed aliquet sem. Aliquam sit amet metus metus.
Donec in mi a arcu cursus commodo non ut metus. Nunc id eros ut augue consequat tempus ut non ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer pretium, erat sit amet scelerisque euismod, purus lectus convallis dui, eget imperdiet sapien est ut magna. Nullam elementum, tortor vitae pulvinar mattis, orci neque porta tortor, a feugiat nisi lacus quis diam. Ut gravida augue id est rutrum elementum. Mauris eget felis dolor. Phasellus ante ante, porttitor sit amet lobortis ut, suscipit id neque. Fusce hendrerit dolor nec odio eleifend in auctor enim cursus. Nullam fermentum pretium risus, in hendrerit nulla cursus sit amet. Fusce eu tempus elit. Ut tortor velit, aliquam in ornare vel, feugiat sed nibh. Donec fringilla est id odio lacinia vulputate. Donec nulla urna, congue sit amet pretium non, dictum at orci. Fusce neque sem, fermentum eu tempus nec, mattis venenatis sem. Proin scelerisque velit tristique urna mattis adipiscing. Proin mattis faucibus facilisis. Integer non lacus ac ligula accumsan convallis quis molestie erat. Curabitur imperdiet vestibulum vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris lacus ligula, hendrerit eget suscipit in, sollicitudin nec dui. Suspendisse euismod, lorem pretium gravida rhoncus, enim quam facilisis orci, nec volutpat nisi dolor id lacus. Proin dolor arcu, rutrum eget hendrerit vel, pharetra id elit. Nullam porta euismod suscipit. Pellentesque malesuada consequat sem, et auctor magna aliquam gravida. Nullam blandit dignissim iaculis. Suspendisse non diam nec augue scelerisque iaculis. Nam id dui sed lorem vulputate rhoncus eget eu tellus. In sit amet nisi nunc. Fusce sed aliquet sem. Aliquam sit amet metus metus.
Donec in mi a arcu cursus commodo non ut metus. Nunc id eros ut augue consequat tempus ut non ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer pretium, erat sit amet scelerisque euismod, purus lectus convallis dui, eget imperdiet sapien est ut magna. Nullam elementum, tortor vitae pulvinar mattis, orci neque porta tortor, a feugiat nisi lacus quis diam. Ut gravida augue id est rutrum elementum. Mauris eget felis dolor. Phasellus ante ante, porttitor sit amet lobortis ut, suscipit id neque. Fusce hendrerit dolor nec odio eleifend in auctor enim cursus. Nullam fermentum pretium risus, in hendrerit nulla cursus sit amet. Fusce eu tempus elit. Ut tortor velit, aliquam in ornare vel, feugiat sed nibh. Donec fringilla est id odio lacinia vulputate. Donec nulla urna, congue sit amet pretium non, dictum at orci. Fusce neque sem, fermentum eu tempus nec, mattis venenatis sem. Proin scelerisque velit tristique urna mattis adipiscing. Proin mattis faucibus facilisis. Integer non lacus ac ligula accumsan convallis quis molestie erat. Curabitur imperdiet vestibulum vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris lacus ligula, hendrerit eget suscipit in, sollicitudin nec dui. Suspendisse euismod, lorem pretium gravida rhoncus, enim quam facilisis orci, nec volutpat nisi dolor id lacus. Proin dolor arcu, rutrum eget hendrerit vel, pharetra id elit. Nullam porta euismod suscipit. Pellentesque malesuada consequat sem, et auctor magna aliquam gravida. Nullam blandit dignissim iaculis. Suspendisse non diam nec augue scelerisque iaculis. Nam id dui sed lorem vulputate rhoncus eget eu tellus. In sit amet nisi nunc. Fusce sed aliquet sem. Aliquam sit amet metus metus.

Блог вебразработчика
Функциональное тестирование и продвижение сайтов

Яндекс.Метрика