Урок 10. Summary session 5
⚡ Кратко: Summary session 5
Summary session 5 — повторение ключевых тем урока 09: Alert-диалоги, переключение вкладок/окон, ActionChains (hover, drag&drop), iframe, загрузка файлов.
- Alert:
driver.switch_to.alert→.accept()/.dismiss()/.text/.send_keys() - Вкладки:
driver.window_handles→driver.switch_to.window(handle)→driver.close() - 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 без switch_to.alert — NoAlertPresentException. 2) Забыл switch_to.default_content() после iframe — NoSuchElementException. 3) time.sleep() после drag&drop вместо явного ожидания.
📖 О чём этот урок
Это урок-повторение блока «Расширенные практики Selenium (часть 2)». Закрепляем всё, что изучали в уроке 09: Alert-диалоги, переключение между вкладками и окнами браузера, ActionChains для сложных взаимодействий мышью, работу с iframe-фреймами и загрузку файлов через input[type=file].
В этом уроке также разобраны решения домашних заданий из лекции: тест iframe на bonigarcia.dev и drag&drop на globalsqa.com.
Что повторим
- Alert: типы диалогов, методы работы, почему
find_elementне видит Alert - Вкладки и окна:
window_handles,switch_to.window(), открытие и закрытие - ActionChains: наведение (hover), двойной клик, перетаскивание (drag&drop)
- iframe: переключение, работа внутри, возврат в основной контекст
- Загрузка файла:
send_keys(path)на<input type="file"> - Разбор ДЗ: iframe-тест и drag&drop с проверкой количества элементов
📚 Что повторить перед изучением
- ← Урок 09: Расширенные практики Selenium (часть 2)
- ← Урок 08: Summary session 4 — ожидания, WebDriverWait+EC
- Явные ожидания:
WebDriverWait+EC.alert_is_present(),EC.frame_to_be_available_and_switch_to_it() - Фикстуры pytest:
@pytest.fixture,yield - Почему Alert не является частью DOM-дерева
🎯 Что изучать дальше
- → Урок 11: Page Object Model — паттерн POM
- Параметризация тестов:
@pytest.mark.parametrize - Скриншоты при ошибках:
driver.save_screenshot() - Обработка исключений Selenium в тестах:
try/except NoAlertPresentException