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

Фотография

Помогите отловить модальное окно.


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

#1 HbIKC

HbIKC

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

  • Members
  • Pip
  • 4 сообщений
  • ФИО:Барсуков Алексей

Отправлено 19 февраля 2018 - 13:16

Доброго времени суток!
Столкнулся вот с какой проблемой.

На форме есть поле "Время", в которое можно вбить данные.

"<input data-elemtype="input" class="f-form-control ng-pristine ng-untouched ng-valid f-align-left f-not-empty" required="" ng-class="{'f-not-empty': value, 'f-required': 
isShowAsRequired()}" type="text" ng-disabled="enabled.toString()==='false'" ng-model="value" small-caption="showCaption" placeholder="" title="1500" ng-blur="onExit({value: value});
checkValueRX();" ng-focus="onFocus({value: value});showErrorMsg();" ng-change="isChange()" ng-paste="paste($event)" fab-mask="" input-mask="inputMaskKind" mask-option="maskForInput"
 tabindex="10">"

 Здесь же происходит проверка на актуальность данных, т.е. если время в прошлом то выходит модальное окошко и забирает фокус на себя.

<div class="modal-content" ng-if="pfObject.kind !== 'image'" style="min-width: 400px; max-width: 800px; word-wrap: break-word;">...<h2 data-elemtype="caption">Ошибка</h2> 
<p> <span data-elemtype="dialog-text" bind-html-compile="pfObject.caption"><span>Значение не может быть меньше текущей даты/времени</span>
</span> </p>... 

Пишу в IDEA. Передаю в систему "0001" и при вводе 1 фокус падает на модальное окно, а тест падает с ошибкой, что не может ввести данные.

Может быть кто-нибудь сталкивался с таким и уже есть готовое решение?

 

 


  • 0

#2 TatyanaV

TatyanaV

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

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


Отправлено 19 февраля 2018 - 13:31

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

 

У Вас при ручном вводе после "000" вылезает это окно?

Если да - то и селениум не сможет ввести больше, чем "000" без его появления.

 

Если окно Вам не нужно - попробуйте driver.switchTo().alert().accept(); перед вводом "1".


  • 0

#3 HbIKC

HbIKC

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

  • Members
  • Pip
  • 4 сообщений
  • ФИО:Барсуков Алексей

Отправлено 19 февраля 2018 - 16:12

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

 

У Вас при ручном вводе после "000" вылезает это окно?

Если да - то и селениум не сможет ввести больше, чем "000" без его появления.

 

Если окно Вам не нужно - попробуйте driver.switchTo().alert().accept(); перед вводом "1".

 

Вот текст ошибки:

org.openqa.selenium.NoSuchElementException: unknown error: Element <input data-elemtype="input" class="f-form-control ng-valid f-align-left ng-dirty ng-touched ng-valid-parse f-not-empty" required="" 
ng-class="{'f-not-empty': value, 'f-required': isShowAsRequired()}" type="text" ng-disabled="enabled.toString()==='false'" ng-model="value" small-caption="showCaption" placeholder="" title="0001" 
ng-blur="onExit({value: value});checkValueRX();" ng-focus="onFocus({value: value});showErrorMsg();" ng-change="isChange()" ng-paste="paste($event)" fab-mask="" input-mask="inputMaskKind" 
mask-option="maskForInput" tabindex="10"> is not clickable at point (950, 229). Other element would receive the click: <div uib-modal-window="modal-window" class="modal fade in" role="dialog" size="md" 
index="0" animate="animate" ng-style="{'z-index': 1050 + $$topModalIndex*10, display: 'block'}" tabindex="-1" uib-modal-animation-class="fade" modal-in-class="in" modal-animation="true" style="z-index: 1050; 
display: block;">...</div>

Только после ввода 1 "выстреливает" окно. До этого нормально.
А окошко мне это как раз нужно, чтобы проверить текст ошибки, которое оно выводит. (


  • 0

#4 TatyanaV

TatyanaV

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

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


Отправлено 20 февраля 2018 - 05:27

В тексте ошибки есть код элемента, который перекрывает поле, куда вводите "1". По нему вполне можно подобрать локатор.

Вы пробовали просто добавить в тест после ввода "000" переключение на указанный элемент?

Ввести текст, ожиданием дождаться кликабельности указанного элемента, потом получить текст из этого элемента?


  • 0

#5 HbIKC

HbIKC

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

  • Members
  • Pip
  • 4 сообщений
  • ФИО:Барсуков Алексей

Отправлено 20 февраля 2018 - 07:34

В тексте ошибки есть код элемента, который перекрывает поле, куда вводите "1". По нему вполне можно подобрать локатор.

Вы пробовали просто добавить в тест после ввода "000" переключение на указанный элемент?

Ввести текст, ожиданием дождаться кликабельности указанного элемента, потом получить текст из этого элемента?

Пока не введешь последний символ окошко не появляется.
Засада та еще (


  • 0

#6 TatyanaV

TatyanaV

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

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


Отправлено 20 февраля 2018 - 08:06

Значит вводите последний символ в блоке try-catch с отловом NoSuchElementException.

В самом кэтче ничего не делаете - просто переключаетесь на этот элемент-окошко и дальше по тесту анализируете текст, как и хотели.


  • 0

#7 HbIKC

HbIKC

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

  • Members
  • Pip
  • 4 сообщений
  • ФИО:Барсуков Алексей

Отправлено 20 февраля 2018 - 10:31

Значит вводите последний символ в блоке try-catch с отловом NoSuchElementException.

В самом кэтче ничего не делаете - просто переключаетесь на этот элемент-окошко и дальше по тесту анализируете текст, как и хотели.

Спасибо!
Обязательно попробую.
Правда я нашел немного другое решение:

GlobalData.getDriver().findElement(By.cssSelector("#edMeetingTime input")).sendKeys(Keys.HOME,"0001");

минус данного варианта пока только в том, что полностью строка не вбивается( но мне пока этого достаточно).


  • 0


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

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