Не очищается поле ввода на питоне selenium

# Функция для инициализации браузера
def init_browser():
    driver = webdriver.Chrome(options=options)  # Используем стандартный webdriver
    driver.get(URL)
    return driver

# Функция для заполнения формы
def fill_form(driver, key):
    try:
        # Явное ожидание для элемента ввода
        input_element = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, 'input[placeholder="Promocode"].inline'))
        )

        # Ввод ключа
        input_element.clear()
        input_element.send_keys(key)

        # Явное ожидание для кнопки и нажатие на неё
        button_element = WebDriverWait(driver, 10).until(
            EC.element_to_be_clickable((By.CSS_SELECTOR, 'button.btn-subscribe-profile'))
        )
        button_element.click()

        # Ожидание после нажатия кнопки (можно настроить время ожидания)
        time.sleep(1)  # Ожидание 1 секунды для обработки нажатия кнопки

        # Очистка поля ввода после нажатия кнопки
        input_element.clear()

Вот мой код, почему то не стирается поле ввода, берется следующий ключ и нажимается на кнопку, потом опять поверх него еще ключ и нажимается на кнопку. Ну не стирается никак, помогите


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

Автор решения: Алексей Сундеев

в момент вызова input_element.clear() страница не успевает завершить предыдущие действия, и Selenium не успевает очистить поле. Можно попробовать добавить небольшое ожидание перед вызовом clear() или использовать метод send_keys(Keys.CONTROL, 'a') + send_keys(Keys.BACKSPACE)

попробуйте так:

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

# Функция для заполнения формы
def fill_form(driver, key):
    try:
        # Явное ожидание для элемента ввода
        input_element = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, 'input[placeholder="Promocode"].inline'))
        )

        # Очистка поля ввода, выделение всего текста и удаление с помощью BACKSPACE
        input_element.send_keys(Keys.CONTROL, "a")
        input_element.send_keys(Keys.BACKSPACE)
        time.sleep(0.5)  # Небольшая пауза для завершения очистки

        # Ввод ключа
        input_element.send_keys(key)

        # Ожидание, пока кнопка станет кликабельной, и нажатие на неё
        button_element = WebDriverWait(driver, 10).until(
            EC.element_to_be_clickable((By.CSS_SELECTOR, 'button.btn-subscribe-profile'))
        )
        button_element.click()

        # Ожидание после нажатия кнопки, чтобы страница успела обработать запрос
        time.sleep(1)

        # Повторная очистка на случай повторного ввода
        input_element.send_keys(Keys.CONTROL, "a")
        input_element.send_keys(Keys.BACKSPACE)

    except Exception as e:
        print(f"Произошла ошибка: {e}")
→ Ссылка