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

Фотография

Как дождаться изменения элемента


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

#1 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 897 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 13 декабря 2011 - 09:05

Что-то никак не могу догнать, как это сделать
Использую Selenium RC+JAVA+Maven


Есть обычная форма с двумя инпут-полями и кнопкой "Сохранить"
1.Открыть форму
2. Нажать кнопку "Сохранить"
3. Ждать, пока появятся ошибки
4. Проверить, если ошибки корректные - то все отлично
5. Заполнили первое поля
6.Нажать кнопку "Сохранить"
Здесь ждать пока не появятся ошибки нельзя,т.к. элемент уже есть (см. шаг 3)

Как дождаться, когда элемент измениться на странице ?
  • 0

#2 soleksenko2702

soleksenko2702

    Постоянный участник

  • Members
  • PipPipPip
  • 193 сообщений
  • ФИО:Олексенко Сергей

Отправлено 13 декабря 2011 - 09:45

Что-то никак не могу догнать, как это сделать
Использую Selenium RC+JAVA+Maven


Есть обычная форма с двумя инпут-полями и кнопкой "Сохранить"
1.Открыть форму
2. Нажать кнопку "Сохранить"
3. Ждать, пока появятся ошибки
4. Проверить, если ошибки корректные - то все отлично
5. Заполнили первое поля
6.Нажать кнопку "Сохранить"
Здесь ждать пока не появятся ошибки нельзя,т.к. элемент уже есть (см. шаг 3)

Как дождаться, когда элемент измениться на странице ?


Как вариант, просто поставить задержку.
  • 0

#3 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 897 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 13 декабря 2011 - 10:22

Как вариант, просто поставить задержку.


Да, это хорошо, если 2 инпут-поля. А если этих полей 50,100 или 1000. Кейс очень долго будет работать



а еще есть какие-нибудь варианты ? кто-нибудь знает
Хелп
  • 0

#4 Serzhant

Serzhant

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

  • Members
  • Pip
  • 11 сообщений
  • ФИО:Сергей К
  • Город:Минск

Отправлено 13 декабря 2011 - 10:27

Как вариант могу предложить: искать элемент "ошибка" в цикле с условием путём проверки его наличия, если элемента нет - перехватывать эксепшн (NoSuchElementException)- ждать 100 мс и заново проверять его наличие, при его наличии выходить из цикла ожидания, так-же выходить из цикла ожидания при достижении, допустим, 5000 мс - и выдавать соответствующее извещение или тот же эксепшн.
Тут временные затраты по ожиданию будут чуть меньше, + вы сами можете ими управлять.
  • 1

#5 D2Phoenix

D2Phoenix

    Постоянный участник

  • Members
  • PipPipPip
  • 200 сообщений
  • ФИО:Чадюк Вадим
  • Город:Гродно


Отправлено 13 декабря 2011 - 11:02

Что-то никак не могу догнать, как это сделать
Использую Selenium RC+JAVA+Maven


Есть обычная форма с двумя инпут-полями и кнопкой "Сохранить"
1.Открыть форму
2. Нажать кнопку "Сохранить"
3. Ждать, пока появятся ошибки
4. Проверить, если ошибки корректные - то все отлично
5. Заполнили первое поля
6.Нажать кнопку "Сохранить"
Здесь ждать пока не появятся ошибки нельзя,т.к. элемент уже есть (см. шаг 3)

Как дождаться, когда элемент измениться на странице ?

На сколько я понял из вашего примера, сообщение об ошибке всё ещё остаётся?
Поэтому вам всеголишь нужно проверить что это сообщение всё ещё существует...
for (int second = 0;; second++)
{
if (second >= 60) Assert.fail("timeout");
try
{
if (selenium.isElementPresent("//div[@id='locator']")) break;
}
catch (Exception e)
{}
Thread.sleep(1000);
}

  • 1


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

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