Как я могу использовать функцию даты или указать дату python ниже кодирования селена.. Прямо сейчас я ставлю жестко закодированные значения «2021-05-01» и «2021-05-31».

#python #selenium #date #selenium-webdriver

Вопрос:

 element = driver.find_element_by_id("txtStarttime")
driver.execute_script("arguments[0].removeAttribute('type')", element)

new_element = driver.find_element_by_id("txtStarttime")
driver.execute_script("arguments[0].setAttribute('value','2021-05-01')", new_element)


#'value','2021-05-01'

element2 = driver.find_element_by_id("txtEndtime")
driver.execute_script("arguments[0].removeAttribute('type')", element2)

new_element2 = driver.find_element_by_id("txtEndtime")
driver.execute_script("arguments[0].setAttribute('value','2021-05-31')", new_element2)
 

Ответ №1:

 import time
time.strftime(('%Y-%m-%d'))
 

Из:

 '2021-06-21'
 

Комментарии:

1. Это не работает в selenium python. Если я поставлю time.strftime((‘%Y-%m-%d’)) вместо «2021-05-01» .. это не сработает. Я хочу поместить функцию datetime вместо фактической даты.. потому что я хочу, чтобы программа запускала ее с 1-го числа прошлого месяца и последнего дня последнего month…so если я запущу его в июне, он должен выбрать дату мая, а в июле он должен автоматически выбрать дату июня

2. Спасибо за вашу помощь, Алекс 🙂

Ответ №2:

Попробуйте relativedelta

 from datetime import date
from dateutil.relativedelta import relativedelta

driver = webdriver.Chrome()

today = date.today()
d = today - relativedelta(months=1)

first_day = date(d.year, d.month, 1)
first_day = first_day.strftime('%Y-%m-%d')

last_day = date(today.year, today.month, 1) - relativedelta(days=1)
last_day = last_day.strftime('%Y-%m-%d')

print(first_day)
print(last_day)
 

С принтами:

 2021-05-01
2021-05-31
 

Тогда просто send_keys с этими ценностями:

 new_element = driver.find_element_by_id("txtStarttime")
new_element.send_keys(first_day)

new_element2 = driver.find_element_by_id("txtEndtime")
new_element2.send_keys(last_day)
 

Комментарии:

1. Большое спасибо за помощь, но я все еще сталкиваюсь с проблемами. Когда я помещаю код выше, он показывает эту ошибку:- ‘объект типа ‘datetime.date’ не имеет len()’. Поэтому я использовал new_element2.send_keys( str(последний день)).. Теперь он не показывает ошибку, но все еще не может видеть даты последнего месяца в поле даты

2. Я только что обновил код, я думаю, что форматирование строк было неправильным. Попробуй сейчас.

3. Не работает, есть ли в любом случае мы можем использовать last_day или first_day с функцией setAttribute ()?

4. Мне срочно нужно автоматизировать этот сайт, если хотите, я могу позвонить вам в Google и показать весь код и веб-сайт.

5. Извини, не отвечаю на звонок. Я только что опробовал свой код на Google.com, и он ввел first_day штраф в поле поиска. Ваша проблема должна быть связана с чем-то другим, возможно, вы пытаетесь ввести текст там, где его нельзя ввести и т.д…. Тебе нужно будет это выяснить. Приведенный выше код должен помочь вам начать, по крайней мере, с правильной логики за первый и последний день предыдущего месяца