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

Фотография

Команда "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
  • 388 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 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 ide, selenium, wait for element present

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

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