Не очищается поле ввода на питоне 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}")