Группа действий: Браузеры
Действие выполняет переключение фокуса управления на заданный фрейм на текущей странице. Фрейм - отдельный, законченный HTML-документ, который вместе с другими HTML-документами может быть отображён в окне браузера. Внутрь фрейма могут быть также вложены фреймы, и в них тоже могут быть вложены фреймы. Фреймы разбивают веб-страницу на отдельные миникадры, расположенные на одном экране, которые являются независимыми друг от друга. Каждое окно может иметь собственный адрес.
Web-элементы, которые находятся внутри фрейма, расположенного на web-странице, изолированы от элементов, находящихся на самой странице и элементов внутри других фреймов страницы. Элементы внутри фрейма будут недоступны для работы с ними с помощью действий до тех пор, пока не будет выполнено переключение на этот фрейм.
Для более глубокого понимания структуры фреймов и принципов их построения, рекомендуем ознакомиться с информацией по ссылкам ниже:
Подробнее о фреймах: 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 |
Технически, действие перемещает фокус управления по структуре фреймов. Для этого укажите целевой фрейм, в который нужно перейти, и область поиска этого фрейма.
Параметры действия:
Поле "Контекст" - укажите контекст открытого браузера, в котором будем искать фрейм. Страница браузера, где расположен нужный фрейм, должна быть открыта (действие "Открыть браузер").
Заполните (необязательные) параметры, можно выбрать один:
Поле "Элемент" - укажите веб-элемент, указывающий на фрейм. Такой элемент может быть создан вручную или с помощью WebSpy. Подробнее в разделе Создание Web-элементов
Поле "Имя" - можно указать имя фрейма. Например: Для поиска такого имени фрейма воспользуйтесь консолью разработчика (клавиша F12 в chrome). Если у элемента отсутствует имя, то необходимо захватить его отдельно и указать в поле "Элемент", как указано в предыдущем параметре.
Поле "Индекс" - можно указать порядковый номер фрейма в структуре страницы. Фреймы нумеруются по порядку от верха страницы браузера, нумерация фреймов начинается с нуля. Количество фреймов и их расположение в разметке страницы можно посмотреть также в консоли разработчика.
Если заполнены все три поля, то робот по порядку обходит параметры и пытается по ним искать.
Если одна из проверок наличия фрейма, по порядку, вернет ошибку, то действие завершит работу с ошибкой. Соответственно, если имя существует, а веб-элемент нет, но все равно указан, то действие отобразит ошибку.
Поле "Область поиска фрейма" - указывает направление поиска нужного фрейма для перехода. Относительно текущего положения, можно искать вниз структуры фрейма (по вложенным дочерним фреймам), вверх структуры фрейма (в родительском фрейма), либо выйти на самый верх структуры страницы Для этого выберите одну из возможных опций:
Если структура страницы имеет несколько уровней вложенности фреймов, то для переключения к фрейму, находящемуся на n-уровне вложенности, необходимо выполнить n действий переключения на фрейм, последовательно.
В рамках примера заполнения поля "Область поиска фрейма" рассмотрим сайт с фреймами: https://www.tutorialspoint.com/html/html_frames.htm , а также схему робота Frames (1).robin-source
Свойство | Описание | Тип | Пример заполнения | Обязательность заполнения поля |
Параметры | ||||
Контекст | Контекст действия для работы с браузером. | Robin.Selenium | Контекст браузера | Да |
Элемент | Фрейм, как элемент для взаимодействия | Robin.WebElement | /html/body/div[5]/div[4]/div/div | Нет |
Имя | Имя фрейма | Robin.String | iframeResult | Нет |
Индекс | Индекс фрейма. Нумерация начинается с 0. | Robin.Numeric | 1 | Нет |
Область поиска фрейма | Область поиска фрейма. Доступно 3 варианта: текущий фрейм - поиск в рамках текущего фрейма; родительский фрейм - поиск в рамках родительского фрейма; вся страница - поиск в рамках всей страницы. | Robin.String | Родительский фрейм | Нет |
Особые условия использования
При работе с элементами страницы элементы фрейма недоступны. Для того, чтобы обратиться к элементам фрейма, на него необходимо переключиться.
При работе с элементами фрейма элементы страницы недоступны. Для того, чтобы продолжить работу с элементами страницы, необходимо переключиться с фрейма обратно на страницу.
Повторно перейти на текущую вкладку возможно также с помощью действия "Переключиться на вкладку".
Используйте консоль разработчика, чтобы определить количество фреймов на странице и их атрибуты . Консоль открывается нажатием клавиши F12 в браузере, где отображается iframe (если он имеется на странице).
Страница браузера с открытой консолью разработчика:
Фрейм (на который переключились) содержит в себе два фрейма.
2. Опция Текущий фрейм - ищем фрейм в внутри текущего фрейма. Переключимся на фрейм с текстом "This is main page and content from any link will be displayed here". Это второй фрейм внутри текущего фрейма. Укажем параметры действия:
Далее, с помощью действие "Получить текст" получим текст из фрейма (см. приложенную к описанию схему робота).
3. Опция Вся страница - выполним переключение фокуса из фрейма на основную страницу. Для этого указываем опцию "Вся страница" и контекст открытого браузера. Остальные параметры оставьте пустыми.
Выполним действие "Получить текст" из основной страницы (см. приложенную к описанию схему робота).
Задача: зайти на сайт с фреймом https://www.w3schools.com/css/tryit.asp?filename=trycss_default, переключиться на него для дальнейшей работы с ним и получить текст из фрейма "My First CSS Example".
Решение: воспользоваться действиями "Открыть браузер", "Переключиться на фрейм", "Получить текст".
Реализация:
Результат:
Программный робот отработал успешно.
В данном случае, если отключить действие "Переключиться на фрейм", то элемент не будет найден, так как поиск элемента осуществляется в текущем документе, а сам элемент находится во вложенном.