Перейти к содержимому

Тестирование REST API
онлайн, начало 29 июля
Школа для начинающих тестировщиков
онлайн, начало 25 июля
Python для начинающих
онлайн, начало 26 июля
Автоматизация функционального тестирования
онлайн, начало 26 июля
Фотография

Переключение на окно подтверждения действия


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 11

#1 viktor___

viktor___

    Новый участник

  • Members
  • Pip
  • 8 сообщений

Отправлено 26 Ноябрь 2018 - 08:13

Конечно заезженный вопрос, но никак не могу найти решение следующей ситуации: появляется окно для подтверждения действия, но саму кнопку Селениум не определяет -  unable to locate element. Как я понимаю, изначально должен переключиться на это всплывающее окно, чтобы сделать его активным, но пока безуспешно. Frame нет, пытался через submit сделать, windows handles тоже не подходит. Может у кого-то есть мысли как добиться выполнения действия? Заранее спасибо за ответ!

 

 

 

 

<div class="modal-dialog type-warning ui-resizable ui-draggable" role="document" style="left: 12px; top: 12px;">
        <div class="modal-content">
            <div class="modal-header ui-draggable-handle">
                <button type="button" class="close" data-dismiss="modal" aria-label="Close" ng-click="confirmDialog.onClose()">
                    <span aria-hidden="true">×</span>
                </button>
                <h4 class="modal-title ng-binding" id="myModalLabel" ng-bind="confirmDialog.title | tsq">Removing session</h4>
            </div>
            <div class="modal-body" style="height: auto;">
                <form class="form-horizontal ng-pristine ng-valid" role="form">
                    <div class="form-group">
                        <label class="col-sm-12" style="text-align: center; font-size: 16px;">
                            <span ng-bind-html="confirmDialog.message | tsq | html" class="ng-binding">Are you sure you want to remove session 'Test Session'?</span>
                        </label>
                    </div>
                </form>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default ng-binding" data-dismiss="modal" ng-click="confirmDialog.callback(false)" ng-bind="confirmDialog.yesNo ? 'No' : 'Cancel'">No</button>
                <button type="button" class="btn btn-primary ng-binding" data-dismiss="modal" ng-click="confirmDialog.callback(true)" ng-bind="confirmDialog.yesNo ? 'Yes' : (confirmDialog.okButtonTitle ? confirmDialog.okButtonTitle : 'OK')">Yes</button>
            </div>
        </div>
    <div class="ui-resizable-handle ui-resizable-e" style="z-index: 90;"></div><div class="ui-resizable-handle ui-resizable-w" style="z-index: 90;"></div></div>


  • 0

#2 Noksa

Noksa

    Активный участник

  • Members
  • PipPip
  • 117 сообщений
  • ФИО:Александр

Отправлено 26 Ноябрь 2018 - 08:25

А вы уверены, что локатор правильный?

 

Лично я очень часто встречаю, что modal-content открывается в том же контексте, т.е. ничего не нужно свитчить, ни фрейм, ни окно.


  • 1

#3 viktor___

viktor___

    Новый участник

  • Members
  • Pip
  • 8 сообщений

Отправлено 26 Ноябрь 2018 - 18:44

В принципе на это и похоже, никаких окон и фреймов, но по xpath-у не может залокейтить кнопку


  • 0

#4 sergueik

sergueik

    Активный участник

  • Members
  • PipPip
  • 101 сообщений
  • ФИО:кузьмин сергей

Отправлено 28 Ноябрь 2018 - 01:53

приведите страницу полностью пожалуйста - не только диалог но и прочее. чтобы другие могло попробовать -  спасибо


  • 0

#5 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 383 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 06 Декабрь 2018 - 08:48

driver.switchTo().alert().accept() пробовали?


  • 0

#6 viktor___

viktor___

    Новый участник

  • Members
  • Pip
  • 8 сообщений

Отправлено 12 Декабрь 2018 - 06:25

driver.switchTo().alert().accept() пробовали?

Да, пробовал, но без успеха. Временно решил проблему нажатием Enter для подтверждения, но это лишь временный вариант. Пытаюсь сейчас применить фреймворк ngWebDriver для работы с Angular, посмотрим что выйдет.


  • 0

#7 sergueik

sergueik

    Активный участник

  • Members
  • PipPip
  • 101 сообщений
  • ФИО:кузьмин сергей

Отправлено 12 Декабрь 2018 - 13:22

https://github.com/s...eik/jProtractor
или
https://github.com/p...ant/ngWebDriver

 

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

https://github.com/s...or/integration 


  • 0

#8 viktor___

viktor___

    Новый участник

  • Members
  • Pip
  • 8 сообщений

Отправлено 13 Декабрь 2018 - 06:24

https://github.com/s...eik/jProtractor
или
https://github.com/p...ant/ngWebDriver

 

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

https://github.com/s...or/integration 

Прикрепленные файлы

  • Прикрепленный файл  SQ.html   181,48К   7 Количество загрузок:

  • 0

#9 sergueik

sergueik

    Активный участник

  • Members
  • PipPip
  • 101 сообщений
  • ФИО:кузьмин сергей

Отправлено 20 Декабрь 2018 - 03:56

@viktor___ к сожалению без стилей страница рендерится никак и понять как поднять в ней хоть один из `modal-dialog` не получается... не могли бы вы  и стили дать посмотреть тоже ? кстати судя по обилию 'x' кнопок там фреймов действительно нету и нужен будет один - другой FluentWait VisibilityOfElement/ invisibilityOfElement - а элемент искать по model    

 

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

Прикрепленные файлы


  • 0

#10 sergueik

sergueik

    Активный участник

  • Members
  • PipPip
  • 101 сообщений
  • ФИО:кузьмин сергей

Отправлено 20 Декабрь 2018 - 05:58

сделал пример работы с полями Angular диалога с одним ng_binding элементом

из

http://fiddle.jshell...uch/RLQhh/show/

в
https://github.com/s...jProtractor.git

тест

@Test
public void testModaulWithAlertWait() {
getPageContent("ng_modal2.htm");
WebElement showDialogButton = ngDriver.findElement(NgBy.buttonText("Open modal"));
showDialogButton.click();


WebElement titleElement = wait.until(ExpectedConditions.visibilityOf(ngDriver.findElement(NgBy.binding("title"))));


WebElement dialogElement = titleElement.findElement(By.xpath("../.."));


System.err.println(
"Dialog Element contents: " + dialogElement.getAttribute("outerHTML"));



dialogElement уже обычный WebElement и вск его дочерние е-ты ищутся простыти By:
 

List<String> formElementIds = new ArrayList<>(
Arrays.asList(new String[] { "email", "password" }));


for (String formElementId : formElementIds) {


List<WebElement> labelElements = dialogElement.findElements(By
.cssSelector(String.format("form label[ for='%s']", formElementId)));
assertThat(labelElements.size(), equalTo(1));
highlight(labelElements.get(0));
 

Прикрепленные файлы


  • 0

#11 viktor___

viktor___

    Новый участник

  • Members
  • Pip
  • 8 сообщений

Отправлено 20 Декабрь 2018 - 06:58

Посмотрю сегодня еще, спасибо. Дело в том, что это декстопное приложение с UI через браузер.


  • 0

#12 sergueik

sergueik

    Активный участник

  • Members
  • PipPip
  • 101 сообщений
  • ФИО:кузьмин сергей

Отправлено 20 Декабрь 2018 - 13:40

если можете выложить кусок со стилями и скриптами то пож-та сделайте... желательно с *одним* а не "сто одним" диалогом


  • 0


Selenium 2.0: стартовый уровень
онлайн
Программирование на Java для тестировщиков
онлайн
Автоматизация функционального тестирования
онлайн
Selenium WebDriver: полное руководство
онлайн



Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Яндекс.Метрика
Реклама на портале