Поиск XPATH для поля даты, где правый щелчок отключен — Selenium Python

Я пытаюсь найти xpath для поля DOB в следующем URL-адресе. Я могу щелкнуть календарь, но после нажатия правый щелчок отключен. SO я использовал исполнителя javascript для анализа значения даты, как показано ниже.

URL-адрес

element = WebDriverWait(self.driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//input[@type='date']")))
self.driver.execute_script("arguments[0].value = arguments[1]", element, "2004-03-18")

Здесь после синтаксического анализа дата 18 марта 2004 года успешно заполняется на веб-странице приложения, но я все же не могу нажать «Далее» из-за ошибки («неправильный формат»). Я проверял это до тех пор, пока я не щелкну календарь и не нажму / не нажму Enter, это не сработает.

Я попытался нажать Enter после нажатия, используя приведенный ниже код. Но у него ошибка "TypeError: объект 'str' не вызывается"

 a = self.driver.find_element(By.XPATH, configReader.readConfig("locators", locator)).click()
 b = Keys.ENTER

Моя цель следующая

1:Parse the date using java script executor
2:Click the date icon using xpath = //input[@type='date']
3:Press Enter

Вместо использования JS-исполнителя попробуйте щелкнуть поле ввода и обработать средство выбора даты, как это сделал бы настоящий пользователь.

JaSON 23.03.2022 10:45
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
1
57
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вам необходимо заполнить все обязательные поля, прежде чем нажать кнопку «Далее». В противном случае он будет отключен.

Код:

driver.maximize_window()

wait = WebDriverWait(driver, 30)


driver.get("https://diy.iiflinsurance.com/form/proposer-form?quote_id=Mr6ynrRUPktQJ8bHk1ix")

wait = WebDriverWait(driver, 30)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "input[placeholder='Full Name']"))).send_keys('Apratim Chaudhuri')
dob = wait.until(EC.visibility_of_element_located((By.XPATH, "//input[@type='date']")))

driver.execute_script("arguments[0].value = arguments[1]", dob, "2004-03-18")

wait.until(EC.element_to_be_clickable((By.XPATH, "//span[text()='Male']"))).click()
wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@placeholder='Email Id']"))).send_keys('[email protected]')


wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@placeholder='Mobile Number']"))).send_keys('9789898989')
wait.until(EC.element_to_be_clickable((By.XPATH, "(//input[@placeholder='Mobile Number'])[2]"))).send_keys('9789898912')
wait.until(EC.element_to_be_clickable((By.XPATH, "//button[text()='NEXT']"))).click()

Импорт:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

Спасибо за Ваш ответ. Я уже заполнил обязательные данные. Но все еще получаю ошибку неправильного формата, пока я не нажму на указатель даты и не выберу значение. Знаете ли вы, как после анализа даты с использованием вышеуказанного метода я хочу щелкнуть средство выбора даты и просто нажать ENTER. Это будет работать только так

Apratim Chaudhuri 24.03.2022 07:49

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

cruisepandey 24.03.2022 18:41

почему-то он не работает в моем локальном :(

Apratim Chaudhuri 29.03.2022 04:45
Ответ принят как подходящий

Попробуйте запустить событие, иногда это необходимо для сайтов Angular/React:

self.driver.execute_script("""
  let [input, date] = arguments
  input.value = date
  input.dispatchEvent(new Event('input', { bubbles: true }))
""", element, "2004-03-18")

Другие вопросы по теме