Задать вопрос
@s257

Элемент формы поиска как запустить?

не могу открыть строку поиск, не нажимается в коде, несмотря на все попытки. что можно сделать сайт kushvsporte.ru

import undetected_chromedriver as uc
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys 
from selenium.common.exceptions import TimeoutException
import time
import datetime

# ========================================================================
# КОНФИГУРАЦИЯ
# ========================================================================
PAGE_LOAD_TIMEOUT = 30
TEAM_NAME = "Манчестер Юнайтед" # !!! ЗАМЕНИТЕ НА КОМАНДУ ДЛЯ ТЕСТА !!!
# ========================================================================

def activate_and_search():
    """Открывает страницу и принудительно активирует поле поиска."""
    
    options = uc.ChromeOptions()
    options.add_argument('--disable-blink-features=AutomationControlled')
    options.add_argument('--log-level=3')
    
    driver = None
    try:
        print(f"[{datetime.datetime.now().strftime('%H:%M:%S')}] Запуск Chrome для активации поиска...")
        driver = uc.Chrome(options=options)
        wait = WebDriverWait(driver, PAGE_LOAD_TIMEOUT)
        
        # 1. Переход на страницу
        driver.get("https://kushvsporte.ru/centerbet/football")
        time.sleep(3) 
        
        # Ждем загрузки списка событий
        wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'events-list')))
        
        search_input_locator = (By.CLASS_NAME, 'formSearchInput')
        
        # 2.0. ПРИНУДИТЕЛЬНАЯ АКТИВАЦИЯ ПОЛЯ ПОИСКА (JS-МЕТОД)
        try:
            # 1. Находим элемент <form class="formSearch...">
            search_form = wait.until(EC.presence_of_element_located((By.XPATH, "//form[contains(@class, 'formSearch')]")))
            
            # 2. Выполняем JavaScript для удаления скрывающего класса и добавления активного класса
            js_script_remove_class = """
                var form = arguments[0];
                form.classList.remove('formSearchOut');
                form.classList.add('formSearchIn'); 
            """
            driver.execute_script(js_script_remove_class, search_form)
            print("✅ 2.0. Принудительное удаление класса 'formSearchOut' с формы выполнено.")
            time.sleep(1) 
            
            # 3. Ждем, пока поле ввода станет ВИДИМЫМ
            search_input = wait.until(EC.visibility_of_element_located(search_input_locator))

        except Exception as e:
            print(f"❌ 2.0. Критическая ошибка: Не удалось принудительно активировать поле поиска. {e}")
            return False
            
        # 2.1. ВВОД НАЗВАНИЯ КОМАНДЫ И АКТИВАЦИЯ ПОИСКА
        try:
            search_input.clear() 
            search_input.send_keys(TEAM_NAME)
            print(f"✅ 2.1. Введено название команды: '{TEAM_NAME}'.")
            
            # Активация поиска через Enter
            search_input.send_keys(Keys.ENTER)
            print("✅ 2.2. Нажата клавиша ENTER для активации поиска/фильтрации. Проверьте результат.")
            time.sleep(5) # Пауза для визуальной проверки
            
        except Exception as e:
            print(f"❌ 2.1. Ошибка при вводе текста или нажатии ENTER. {e}")
            return False
        
        return True

    except Exception as e:
        print(f"[{datetime.datetime.now().strftime('%H:%M:%S')}] !!! КРИТИЧЕСКАЯ ОШИБКА !!!: {e}")
        return False
    finally:
        if driver:
            print("Закрытие драйвера.")
            driver.quit()

# ========================================================================
# ЗАПУСК
# ========================================================================
if __name__ == "__main__":
    print("=====================================================")
    print(f"⏳ Тест активации поиска для команды: {TEAM_NAME}")
    print("=====================================================")

    activate_and_search()
  • Вопрос задан
  • 14 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Python-разработчик
    9 месяцев
    Далее
  • SF Education
    Бэкенд-разработчик на Python
    3 месяца
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы