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

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

Команда "wait for element present" (Selenium IDE) - нужно ли у

selenium ide selenium wait for element present

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

#1 anna99

anna99

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

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

Отправлено 08 Апрель 2019 - 17:44

Всем добрый вечер!

 

Помогите, пожалуйста, разобраться с командой "wait for element present" в Selenium IDE.

Задаю в приложении параметры поиска, жму кнопку Искать...в течение какого-то времени, может сек 10 идет поиск.

Ну и, соот-но, появляются результаты поиска.

 

Скрипт следующий:

 

click                                                 id=searchButton

 

wait for element present                  css=#searchResult > div.mCSB_container                       30000

 

так вот, почему-то не ждет скрипт 30 сек, пока откроются результаты поиска. Идет дальше, ну а элементов, которые я проверяю уже по результатам , соот-но нет, вот и валится(((

Скорее всего, я что-то делаю не так, а вот что, не пойму((

Помогите, пожалуйста, разобраться.

 

На всякий случай прикладываю HTML.

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

  • Прикрепленный файл  1.JPG   50,61К   1 Количество загрузок:

  • 0

#2 TatyanaV

TatyanaV

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

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


Отправлено 09 Апрель 2019 - 06:06

Теоретически, "element present" ждёт появления элементов в DOM'е, а не у Вас на экране. Возможно, блок для результатов в DOM'е присутствует изначально, а после поиска - выводится.

На это намекает "display: none;" в searchResultContainerEmpty - возможно у mCSB_container до поиска тоже стояло "display: none;". Но т.к. сам элемент есть, "wait for element present" его успешно находит.

 

Если Вы хотите проверять, что элемент не просто есть, но и выведен на экран - есть два варианта:

1. Ждать не "wait for element present", а "wait for element clickable" (не помню уже, как это правильно в Selenium IDE пишется).

2. Если я права и он просто скрыт через style*='display: none;', можно попробовать искать через немного другой локатор. Т.е. ждать не "#searchResult > div.mCSB_container", а "#searchResult > div.mCSB_container:not([style*='display: none;'])" или "#searchResult:not([style*='display: none;']) > div.mCSB_container", в зависимости от того, на какой элемент вешается style*='display: none;' до поиска. Попробуйте посмотреть эту часть кода страницы до "поиска".


  • 0

#3 anna99

anna99

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

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

Отправлено 09 Апрель 2019 - 07:06

Теоретически, "element present" ждёт появления элементов в DOM'е, а не у Вас на экране. Возможно, блок для результатов в DOM'е присутствует изначально, а после поиска - выводится.

На это намекает "display: none;" в searchResultContainerEmpty - возможно у mCSB_container до поиска тоже стояло "display: none;". Но т.к. сам элемент есть, "wait for element present" его успешно находит.

 

Если Вы хотите проверять, что элемент не просто есть, но и выведен на экран - есть два варианта:

1. Ждать не "wait for element present", а "wait for element clickable" (не помню уже, как это правильно в Selenium IDE пишется).

2. Если я права и он просто скрыт через style*='display: none;', можно попробовать искать через немного другой локатор. Т.е. ждать не "#searchResult > div.mCSB_container", а "#searchResult > div.mCSB_container:not([style*='display: none;'])" или "#searchResult:not([style*='display: none;']) > div.mCSB_container", в зависимости от того, на какой элемент вешается style*='display: none;' до поиска. Попробуйте посмотреть эту часть кода страницы до "поиска".

Таня, спасибо большое! Буду пробовать сейчас. Я почему-то так и думала, что находит он ег сразу, т.к. элемент изначально присутствует, просто не виден.


  • 0

#4 anna99

anna99

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

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

Отправлено 09 Апрель 2019 - 08:48

Теоретически, "element present" ждёт появления элементов в DOM'е, а не у Вас на экране. Возможно, блок для результатов в DOM'е присутствует изначально, а после поиска - выводится.

На это намекает "display: none;" в searchResultContainerEmpty - возможно у mCSB_container до поиска тоже стояло "display: none;". Но т.к. сам элемент есть, "wait for element present" его успешно находит.

 

Если Вы хотите проверять, что элемент не просто есть, но и выведен на экран - есть два варианта:

1. Ждать не "wait for element present", а "wait for element clickable" (не помню уже, как это правильно в Selenium IDE пишется).

2. Если я права и он просто скрыт через style*='display: none;', можно попробовать искать через немного другой локатор. Т.е. ждать не "#searchResult > div.mCSB_container", а "#searchResult > div.mCSB_container:not([style*='display: none;'])" или "#searchResult:not([style*='display: none;']) > div.mCSB_container", в зависимости от того, на какой элемент вешается style*='display: none;' до поиска. Попробуйте посмотреть эту часть кода страницы до "поиска".

Татьяна, я проанализировала код.К сожалению, элементы "#searchResult > div.mCSB_container" изначально присутствуют на странице, еще до момента поиска. Это просто пустые блоки и они не регулируются атрибутом style*='display: none;'. Я думаю, что мне не стоит привязываться к ним ("#searchResult > div.mCSB_container"). А проверку результатов поиска организовать посредством привязки к вложенным элементам (список дивов с классом flightContainer), которые появляются у элемента div.mCSB_container после поиска.


  • 0


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




Темы с аналогичным тегами selenium ide, selenium, wait for element present

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

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

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