Выбор ответа Junior Selenium и WebDriver обновлено

Элемент внутри iframe

Вопрос

Форма оплаты встроена в iframe. find_element не находит поле номера карты. Что сделать?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: switchto.frame(...), после работы switchto.defaultcontent(). Контекст поиска Selenium ограничен текущим документом.

Варианты ответа

  1. switch_to.frame(...), после работы switch_to.default_content()правильный ответ
  2. Увеличить неявное ожидание: поле во фрейме грузится дольше основной формы
  3. Искать поле по XPath от корня /html, он проходит сквозь фреймы
  4. Открыть адрес фрейма в новой вкладке и заполнить поле там

Разбор

Контекст поиска Selenium ограничен текущим документом. Пока не переключишься во фрейм, его элементов не видно, никакое ожидание и смена вида локатора не помогут. Вкладки тут ни при чём.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме