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

Техники локализации плавающих дефектов
онлайн, начало 17 августа
Школа для начинающих тестировщиков
онлайн, начало 20 августа
Программирование на Python для тестировщиков
онлайн, начало 14 августа
Тестирование без требований
онлайн, начало 17 августа
Фотография

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


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

#1 mr_d

mr_d

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

  • Members
  • Pip
  • 7 сообщений
  • Город:Москва

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

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

 

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

На странице есть 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 открытого календаря?

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

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


  • 0

#2 mr_d

mr_d

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

  • Members
  • Pip
  • 7 сообщений
  • Город:Москва

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

Решил.

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

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

и т.д. 


  • 0

#3 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 766 сообщений


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

Хороший пример как быстро и надёжно работать с датепикером (через jQuery API):

http://barancev.gith...tepicker-value/


  • 0


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



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

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

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