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

Фотография

Выбор даты из календаря средствами Selenium IDE

selenium ide selenium

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

#1 anna99

anna99

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

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

Отправлено 11 апреля 2019 - 11:15

Добрый день!

Опять я к вам за помощью.

Проанализировала даты в календаре. Есть активные для выбора даты, есть неактивные. Отличаются в коде только классом, у неактивных класс disabled.

Могу ли я средствами Selenium IDE выбрать любую дату, которой не присвоен класс disabled, соответственно она активна.

Пробовала регулярным выражением, не получается((( может не правильно шаблон прописываб(((

 

Все даты в календаре имеют id=dayи цифру дня, соответственно., т.е. id=day1, (2, 3, 4, и т.д.)

 

Может есть како-йто волшебный метод, который заставит селениум работать!))) Именно Selenium IDE!

 

Спасибо большое!

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

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

  • 0

#2 TatyanaV

TatyanaV

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

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


Отправлено 11 апреля 2019 - 13:10

css: [id*='day']:not([class='disabled'])

 

п.с.: *= - означает "содержит".


  • 0

#3 anna99

anna99

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

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

Отправлено 15 апреля 2019 - 13:46

css: [id*='day']:not([class='disabled'])

 

п.с.: *= - означает "содержит".

Добрый день! Татьяна, спасибо! Для команд verify element present данная проверка проходит отлично.
А вот команда click (а именно она используется для выбора даты из календаря) не отрабатывает. Календарь открывается и все на этом, дата, не задизейбленная (даже текущая, она тоже активна) не выбирается. Я попробовала ограничить еще и классом today, вот так 

css=#day:not([class*="disabled"]):not([class*="today"])

или

css=[id*="day"]:not([class*="disabled"]):not([class*="today"])

или

css=[id*="day"]:not([class*="disabled";"today"])

 

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

 

А вот если просто указываю условие для выбора текущей даты, все отрабатывает, текущая дата выбирается из календаря.

Команда опять же click и локатор css=#cal td.today

 

Если можно, поправьте меня, что не так?


  • 0

#4 TatyanaV

TatyanaV

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

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


Отправлено 16 апреля 2019 - 06:45

А Вас слово "not" не смущает? :) 
 
[id*='day']:not([class='disabled']) = элемент, в айдишнике которого присутствует "day", и у которого НЕТ класса "disabled".

 

Соответственно, варианты, которые Вы пробовали:

css=#day:not([class*="disabled"]):not([class*="today"]) = элемент, айдишник которого = "day" (у Вас вроде бы не было таких элементов), и у которого НЕТ класса "disabled" и НЕТ класса "today".

css=[id*="day"]:not([class*="disabled"]):not([class*="today"]) = элемент, в айдишнике которого присутствует "day", и у которого НЕТ класса "disabled" и НЕТ класса "today".

 

#cal td.today = где-то ниже по DOM'у относительно элемента с id = "cal", найти элемент td, у которого ЕСТЬ класс "today".

 

Ничего удивительного, что с этими локаторами по-разному отрабатывает всё :).

 

Теоретически, [id*="day"]:not([class*="disabled"]):not([class*="today"])  должно было отработать и кликнуть по "вчера" (если по скрину с кодом смотреть). Возможно, пытается кликнуть до того, как календарь "откроется". 

verify element present смотрит лишь на наличие элемента в DOM'e. Видно его или нет, можно ли по нему кликнуть и т.д. - не проверяется.

Попробуйте дожидаться не наличия элемента (verify element present), а его кликабельности (element clickable - не знаю, как оно в IDE пишется).

 

п.с.: [id*="day"].today:not([class*="disabled"]) = элемент, айдишник которого содержит "day", и у которого ЕСТЬ класс "today" и НЕТ класса "disabled".


  • 0

#5 anna99

anna99

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

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

Отправлено 16 апреля 2019 - 14:49

А Вас слово "not" не смущает? :) 
 
[id*='day']:not([class='disabled']) = элемент, в айдишнике которого присутствует "day", и у которого НЕТ класса "disabled".

 

Соответственно, варианты, которые Вы пробовали:

css=#day:not([class*="disabled"]):not([class*="today"]) = элемент, айдишник которого = "day" (у Вас вроде бы не было таких элементов), и у которого НЕТ класса "disabled" и НЕТ класса "today".

css=[id*="day"]:not([class*="disabled"]):not([class*="today"]) = элемент, в айдишнике которого присутствует "day", и у которого НЕТ класса "disabled" и НЕТ класса "today".

 

#cal td.today = где-то ниже по DOM'у относительно элемента с id = "cal", найти элемент td, у которого ЕСТЬ класс "today".

 

Ничего удивительного, что с этими локаторами по-разному отрабатывает всё :).

 

Теоретически, [id*="day"]:not([class*="disabled"]):not([class*="today"])  должно было отработать и кликнуть по "вчера" (если по скрину с кодом смотреть). Возможно, пытается кликнуть до того, как календарь "откроется". 

verify element present смотрит лишь на наличие элемента в DOM'e. Видно его или нет, можно ли по нему кликнуть и т.д. - не проверяется.

Попробуйте дожидаться не наличия элемента (verify element present), а его кликабельности (element clickable - не знаю, как оно в IDE пишется).

 

п.с.: [id*="day"].today:not([class*="disabled"]) = элемент, айдишник которого содержит "day", и у которого ЕСТЬ класс "today" и НЕТ класса "disabled".

Таня, спасибо! Буду пробовать. А по вышеописанному, да, я not для today намеренно написала. Мне это и нужно было, чтобы выбралась активная дата, но не сегодня,например вчера или завтра. Поэтому я и написала такой локатор css= [id*="day"]:not([class*="disabled"]):not([class*="today"]) 

Просто непонятно было, почему, если today без not, то выбирает текущую, а если в условии not, то не выбирает дату, кроме текущей и дисабл.

А так, конечно я поняла, как именно отрабатывает данный локатор и для чего там not))))) Спасибо огромное!


  • 0



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

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

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