from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from time import sleep
# 1. Настройки и запуск браузера
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--window-size=1000,900")
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service, options=chrome_options)
wait = WebDriverWait(driver, 15)
# 2. Открываем сайт
driver.get("
https://eaist.mos.ru/login.html?redirect=https://e...")
# 3. Кнопка "Войти в систему"
login_button = wait.until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[1]/div/button")))
login_button.click()
# 4. Функция для доступа к элементу внутри вложенных Shadow DOM
def get_shadow_element(driver, selectors):
script = '''
let el = document;
for (let sel of arguments[0]) {
el = el.querySelector(sel);
if (el && el.shadowRoot) {
el = el.shadowRoot;
}
}
return el;
'''
return driver.execute_script(script, selectors)
# 5. Ждём загрузки Shadow DOM
sleep(2)
# 6. Путь до нужного элемента внутри Shadow DOM
selectors = [
'eaist-app', # Первый Shadow Host
'eaist-panel-view', # Вложенный Shadow Host
'cookie-notification' # Ещё один Shadow Host
]
# 7. Получаем нужный элемент и кликаем по кнопке
shadow = get_shadow_element(driver, selectors)
button = shadow.find_element(By.CSS_SELECTOR, 'button') # Возможно, нужно уточнить селектор!
button.click()
# 8. Закрываем браузер
sleep(3)
driver.quit()