С помощью Селениум нажать на календаре на вчерашний день

Нужна помощь в реализации действий на питон+селениум. Я только изучаю селениум, поэтому могу спрашивать базовые вещи - прощу проявить терпение и помочь:) Передо мной стоит задача: на CRM открыть календарь и на нем выбрать диапазон дат. Я без проблем выбираю начало диапазона (там все просто - есть заданная дата и поэтом простым поиском элемента задача решает), а вот что делать с окончанием диапазона - непонятно. Мне нужно выбрать вчерашний день, и чтобы селениум кликнул по нему. Я пока не представляю с какой стороны подойти к решению. Буду благодарен любой помощи.

Пример того, что нужно обработать:

страница

Начальная дата выбирается так.

for i in range(50):
    if driver.find_element_by_xpath('//*[@id="calendar-popover"]/div[2]/div[1]/div[1]/div/div/div[2]/div/div[1]/div').text != 'Январь 2019':
        driver.find_element_by_xpath('//*[@id="calendar-popover"]/div[2]/div[1]/div[1]/div/div/div[1]/span[1]').click()
        i += 1
    else:
        driver.find_element_by_xpath('//*[@id="calendar-popover"]/div[2]/div[1]/div[1]/div/div/div[2]/div/div[3]/div[1]/div[2]').click()
        break

По циклу проверяю, что название месяца и год совпали с нужными мне, и нажимаю на 1 число, положение которого всегда фиксированное.


Ответы (1 шт):

Автор решения: djidji

В общем разобрался сам. Получился код

ddd1 = date.today() 
ddd1 = ddd1 - timedelta(days=1)
i= int(ddd1.day) + 29

if date.today().day > 1:
    zz = driver.find_elements_by_xpath("//div[contains(text(),p1234qw) and @class='DayPicker-Day']")
    zz[i].click()
else:
    driver.find_element_by_xpath('//*[@id="calendar-popover"]/div[2]/div[1]/div[2]/div/div/div[1]/span[1]').click()
    zz = driver.find_elements_by_xpath("//div[contains(text(),p1234qw) and @class='DayPicker-Day']")
    zz[-1].click()

Я формирую список всех дат в обоих календарях, автоматически из них исключаются 2 выделенных дня. Поэтому ко вчерашнему дню +29 и нажимается как надо. Плюс добавил отработку, когда текущее число 1-ое и нужно откатится на предыдущий месяц.

→ Ссылка