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

Программирование на C# для тестировщиков
онлайн, начало 22 мая
Тестирование производительности: JMeter 5
онлайн, начало 22 мая
Погружение в тестирование. Jedi point
онлайн, начало 25 мая
Школа тест-менеджеров v. 2.0
онлайн, начало 27 мая
Фотография

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


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 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
  • 749 сообщений


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

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

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


  • 0


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



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

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

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