Урок 09. Расширенные практики Selenium (часть 2)

📁 Блок: Selenium ⏱️ Время изучения: ~60 мин 🎯 Сложность: Средняя
#alert #switch_to #window_handles #ActionChains #drag_and_drop #iframe #file-upload

⚡ Кратко: Alert, вкладки, ActionChains и загрузка файлов

Урок продолжает расширенные практики Selenium 4: Alert-диалоги, переключение между вкладками/окнами, ActionChains для сложных взаимодействий (hover, drag&drop), работа с iframe, загрузка файлов.

  • Alert: driver.switch_to.alert.accept() / .dismiss() / .text / .send_keys()
  • Вкладки: driver.window_handlesdriver.switch_to.window(handle)
  • ActionChains: ActionChains(driver).move_to_element(el).perform() — hover, drag_and_drop(src, tgt).perform()
  • iframe: driver.switch_to.frame(el) → работа внутри → driver.switch_to.default_content()
  • Загрузка файла: input[type=file].send_keys(abs_path) — путь должен быть абсолютным

Топ-3 ошибки: 1) Не переключился на alert — NoAlertPresentException. 2) После drag&drop не ожидал EC — тест падает из-за гонки. 3) Забыл switch_to.default_content() после iframe — NoSuchElementException.

📖 О чём этот урок

Этот урок — продолжение расширенных практик Selenium. В уроке 07 мы освоили явные и неявные ожидания, WebDriverWait + EC. Теперь переходим к задачам, где браузер открывает всплывающие окна (Alert), новые вкладки, страница содержит iframe или требуется сложное взаимодействие мышью.

Все эти ситуации встречаются в реальных проектах: подтверждение действий через Alert, redirect на новую вкладку, виджеты внутри iframe (например, Google Maps, Captcha, платёжные формы), drag&drop в Kanban-досках.

Что изучим

  • Alert-диалоги: alert, confirm, prompt — чтение текста, принятие, отмена, ввод
  • Переключение между вкладками: window_handles, switch_to.window(), close()
  • ActionChains: наведение курсора (hover), двойной клик, drag&drop
  • Фреймы (iframe): switch_to.frame(), switch_to.default_content()
  • Загрузка файлов через input[type=file] и send_keys()
  • Практические задания из лекции: huge_form, math.html, redirect, hover-menu, drag-and-drop, file_input

📚 Что повторить перед изучением

🎯 Что изучать дальше