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

Публикации mr_d

2 публикаций создано mr_d (учитываются публикации только с 17 апреля 2023)


#176417 Как получить элемент внутри элемента

Отправлено автор: mr_d 02 мая 2020 - 21:02 в Selenium - Functional Testing

Решил.

Для элементов, с которыми буду взаимодействовать в календаре, переписал локаторы, таким образом, чтобы брать элементы только с видимого календаря. 

DATEPICKER_PERIOD_HEADING = (
By.XPATH, "//ul[@ng-model='date' and not(contains(@style, 'display: none;'))]/descendant::button/strong")

и т.д. 




#176414 Как получить элемент внутри элемента

Отправлено автор: mr_d 02 мая 2020 - 15:02 в Selenium - Functional Testing

Добрый день, коллеги!

 

В автоматизации новичок и вот уже несколько дней не удается реализовать свою задумку.  

На странице есть 2 поля для даты - для дат "от" и "до". При клике  - выпадает календарь (одновременно может быть виден только один). 

 

Создал для каждого календаря такие локаторы:

CALENDAR_FROM = (By.XPATH, "//input[@name='from']/../ul[@ng-change='dateSelection()']")
CALENDAR_TO = (By.XPATH, "//input[@name='to']/../ul[@ng-change='dateSelection()']")

По сути, эти 2 date picker отличаются только значением атрибута name в инпуте. Внутри все одинаково. 

Поэтому хочу реализовать следующее:

 

Открывать определенный календарь (будет отдельный метод открытия для каждого календаря). 

Выбирать дату в этом открытом календаре - универсальный метод.

 

Например, для выбора периода (месяц-год) внутри каждого календаря есть button:

CALENDAR_PERIOD = (By.XPATH, "//button/strong")

При клике на него, период из "месяц-год" меняется на "год".  

Items исходного календаря меняются из чисел месяца на месяцы года. 

 

Как сделать так, чтобы при поиске выбирался CALENDAR_PERIOD открытого календаря?

Т.е. мне нужен вложенный элемент видимого в данный момент элемента. 

Прикрепленные изображения

  • Screenshot_1.png
  • Screenshot_2.png