Переключиться на фрейм / Switch to frame
Группа действий: Браузеры
Действие выполняет переключение фокуса управления на заданный фрейм на текущей странице. Переключение на фрейм используется в тех случаях, когда необходимо обратиться к веб-элементам, расположенным внутри фрейма.
Фрейм - отдельный законченный HTML-документ, который вместе с другими HTML-документами может быть отображён в окне браузера.
В настройках действия поля "Элемент", "Имя" и "Индекс" есть 3 разных способа обратиться к нужному фрейму. Если заполнены все три поля, то робот по порядку обходит параметры и пытается по ним искать. Если одна из проверок по порядку вернет ошибку, то действие завершит работу с ошибкой. Соответственно, если имя существует, а веб-элемент нет, но все равно указан, то действие отобразит ошибку.
Подробнее о фреймах:
https://osipenkov.ru/iframe-tracking-gtm/
https://ru.wikipedia.org/wiki/%D0%A4%D1%80%D0%B5%D0%B9%D0%BC_(HTML)
https://www.tutorialspoint.com/html/html_frames.htm
Пример схемы робота при переключении между фреймами: Frames (1).robin-source
Действие "Переключиться на фрейм" состоит из параметров:
Поле "Контекст" - указывается контекст для работы с браузером. Необходимо, чтобы заранее страница браузера была открыта (действие "Открыть браузер").
Поле "Элемент" - необходимо указать элемент, который указывает на фрейм (т.е фрейм, как элемент для взаимодействия). Подробнее в разделе Создание Web-элементов
Поле "Имя" - необходимо указать имя фрейма. Например: . Если имени у элемента нет, то необходимо захватить его отдельно и указать в поле "Элемент".
Поле "Индекс" - если несколько фреймов в текущем фрейме, то обращение к ним возможно по индексам. Фреймы нумеруются по порядку от верха страницы браузера.
Поле "Область поиска фрейма" - в поле можно выбрать 3 варианта значений. Текущий фрейм - поиск в рамках текущего фрейма (поиск следующего будет в текущем). Родительский фрейм - поиск фрейма на уровень выше. Вся страница - поиск в рамках всей страницы на которой есть фреймы.
В рамках примера заполнения поля "Область поиска фрейма" рассмотрим сайт, на котором есть фреймы: https://www.tutorialspoint.com/html/html_frames.htm , а также схему робота Frames (1).robin-source
- Родительский фрейм - ищем фрейм на уровень выше.
Данный фрейм состоит включает в себя два. - Текущий фрейм - ищем фрейм в рамках текущего.
3. Вся страница - идет переключение фрейма на основную страницу (технически, выход драйвера из контекста фреймов), и после этого мы еще и не передали аргументов для переключения, мы оказались на основной странице и получили с нее текст с помощью действия "Получить текст" (см. приложенную к описанию схему робота).
Настройки
Свойство | Описание | Тип | Пример заполнения | Обязательность заполнения поля |
Параметры | ||||
Контекст | Контекст действия для работы с браузером. | Robin.Selenium | Контекст браузера | Да |
Элемент | Фрейм, как элемент для взаимодействия | Robin.WebElement | /html/body/div[5]/div[4]/div/div | Нет |
Имя | Имя фрейма | Robin.String | iframeResult | Нет |
Индекс | Индекс фрейма. Нумерация начинается с 0. | Robin.Numeric | 1 | Нет |
Область поиска фрейма | Область поиска фрейма. Доступно 3 варианта: текущий фрейм - поиск в рамках текущего фрейма; родительский фрейм - поиск в рамках родительского фрейма; вся страница - поиск в рамках всей страницы. | Robin.String | Родительский фрейм | Нет |
Особые условия использования
При работе с элементами страницы элементы фрейма недоступны. Для того, чтобы обратиться к элементам фрейма, на него необходимо переключиться.
При работе с элементами фрейма элементы страницы недоступны. Для того, чтобы продолжить работу с элементами страницы, необходимо переключиться с фрейма обратно на страницу.
Повторно перейти на текущую вкладку возможно также с помощью действия "Переключиться на вкладку".
При нажатии на кнопку F12 в любом браузере будет открыта консоль разработчика, где отображается iframe (если он имеется на странице).
Страница браузера с открытой консолью разработчика:
Пример использования
Задача: зайти на сайт с фреймом https://www.w3schools.com/css/tryit.asp?filename=trycss_default, переключиться на него для дальнейшей работы с ним и получить текст из фрейма "My First CSS Example".
Решение: воспользоваться действиями "Открыть браузер", "Переключиться на фрейм", "Получить текст".
Реализация:
- Собрать робота, состоящего из действий:
- Настроить параметры для действия "Открыть браузер".
- Настроить параметр для действия "Переключиться на фрейм".
- Настроить параметры для действия "Получить текст". В поле "Элемент" необходимо указать элемент из которого необходимо получить текст. Подробнее о создании элементов в разделе: Создание Web-элементов
- Нажать на кнопку "Старт" в верхней панели.
Результат:
Программный робот отработал успешно.
В данном случае, если отключить действие "Переключиться на фрейм", то элемент не будет найден, так как поиск элемента осуществляется в текущем документе, а сам элемент находится во вложенном.