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






Вам необходимо заполнить все обязательные поля, прежде чем нажать кнопку «Далее». В противном случае он будет отключен.
Код:
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. Это будет работать только так
Вы запускали код, который я вам дал? Он отлично работает в моей локальной среде.
почему-то он не работает в моем локальном :(
Попробуйте запустить событие, иногда это необходимо для сайтов Angular/React:
self.driver.execute_script("""
let [input, date] = arguments
input.value = date
input.dispatchEvent(new Event('input', { bubbles: true }))
""", element, "2004-03-18")
Вместо использования JS-исполнителя попробуйте щелкнуть поле ввода и обработать средство выбора даты, как это сделал бы настоящий пользователь.