Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Переключиться на фрейм Версия 13 (Java)

Группа действий: Браузеры

...

Описание 

Действие выполняет переключение фокуса управления  на текущей странице на странице на заданный фрейм фрейм . Фрейм  Фрейм - отдельный отдельный, законченный 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

Технически, действие перемещает фокус управления по структуре фреймов. Для этого необходимо указать целевой фрейм, в который нужно перейти, и область поиска этого фрейма.

Иконка 

Image Removed

Параметры действия

Поле "Контекст"                                      Необходимо указать контекст открытого браузера, в котором нужно искать фрейм

                                                                 Страница браузера, где расположен нужный фрейм, должна быть открыта (действие "Открыть браузер").

                                                                 Image Removed

Поле "Элемент"                                      Необходимо указать веб-элемент, указывающий на фрейм. Такой элемент может быть создан вручную или с помощью WebSpy. 

                                                                Подробнее в разделе Создание Web-элементов

Поле "Имя"                                            Можно указать имя фрейма. Например: Image Removed 

                                                                Для поиска такого имени фрейма воспользуйтесь консолью разработчика (клавиша F12 в chrome).

                                                                Если у элемента отсутствует имя, то необходимо захватить его отдельно и указать в поле "Элемент", как указано в предыдущем параметре. 

Поле "Индекс"                                      Можно указать порядковый номер фрейма в структуре страницы

                                                               Фреймы нумеруются по порядку от верха страницы браузера, нумерация фреймов начинается с нуля.

                                                               Количество фреймов и их расположение в разметке страницы можно посмотреть также в консоли разработчика.

Подсказка

Если заполнены все три вышеперечисленных необязательных полей, то робот по порядку обходит параметры и пытается по ним искать фрейм. 

Если одна из проверок наличия фрейма, по порядку, выдаст ошибку, то действие завершит работу с ошибкой. Соответственно, если имя существует, а веб-элемент нет, но все равно указан, то действие отобразит ошибку. 

Поле "Область поиска фрейма"        Указывает направление поиска нужного фрейма для перехода

                                                            Относительно текущего положения, можно искать:

              • вниз структуры фрейма (по вложенным дочерним фреймам)
              • вверх структуры фрейма (в родительском фрейме)
              • выйти на самый верх структуры страницы.

                                                            Для этого необходимо выбрать одну из возможных опций:

              • Текущий фрейм - действие будет искать фрейм, указанный в полях Элемент/Имя/Индекс в текущем местоположении (фрейме)
              • Родительский фрейм - действие будет искать фрейм, указанный в полях Элемент/Имя/Индекс, в родительском фрейме, расположенном на уровень выше относительно текущего местоположения (фрейма). Также используйте эту опцию, когда текущий фокус находится в самом верху структуры страницы, например, когда вы только что открыли данную страницу
              • Вся страница - действие выполнит переключение фокуса из фрейма (из любого уровня вложенности) обратно на страницу. При использовании этой опции поля Элемент/Имя/Индекс не заполняются

                    Если структура страницы имеет несколько уровней вложенности фреймов, то для переключения к фрейму, находящемуся на n-уровне вложенности, необходимо выполнить n действий переключения на фрейм, последовательно.

Настройки

Иконка действия

Image Added

Параметры и их настройки

Свойство

Описание

Тип

Пример заполнения

Обязательность 

заполнения поля

Параметры

Контекст

Контекст действия для работы с браузером

Robin.Selenium

Контекст браузера

Да

Элемент

Фрейм, как элемент для взаимодействия

Robin.WebElement

/html/body/div[5]/div[4]/div/div

Нет

Имя

Имя фрейма

Robin.String

iframeResult

Нет

Индекс

Индекс фрейма. Нумерация начинается с 0

Robin.Numeric

1

Нет

Область поиска фрейма

Область поиска фрейма

Доступно 3 варианта:

текущий фрейм - поиск в рамках текущего фрейма родительский фрейм - поиск в рамках родительского фрейма

вся страница - поиск в рамках всей страницы

Robin.String

Родительский фрейм

Нет

Особые условия использования 

  • Из необязательных параметров, можно выбрать и заполнить один;
  • При работе с элементами страницы элементы фрейма недоступны.
  •  Для
  • Для того, чтобы обратиться к элементам фрейма, на него необходимо переключиться;
  • При работе с
  • элементами фрейма
  • элементами фрейма  элементы страницы недоступны.
  •  Для
  • Для того,
  • чтобы продолжить
  • чтобы продолжить работу с элементами страницы,
  • необходимо переключиться
  • необходимо переключиться с фрейма обратно на страницу;
  • Повторно перейти на текущую вкладку возможно также с помощью действия "Переключиться на вкладку";
  • Чтобы определить количество фреймов на странице и их атрибуты, необходимо
  • использовать консоль
  • использовать консоль разработчика. Консоль открывается нажатием клавиши F12 в браузере, где отображается iframe (если он имеется на странице).

Image Modified
Страница браузера с открытой консолью разработчика

...

.
Image Modified
В рамках примера заполнения поля "Область поиска фрейма" рассмотрим сайт с фреймами: https://www.tutorialspoint.com/html/html_frames.htm , а также схему робота Frames (1).robin-source.

Пример использования

Задача 1

Реализовать действия с использованием параметров "Индекс" и опций параметра "Область поиска".

  1. Опция Родительский фрейм - будем искать во фрейме находящемся на уровень выше относительно текущего фокуса (фрейма), либо когда фокус находится на основной странице. На сайте 3 фрейма (можно посмотреть с помощью консоли разработчика). Для переключения на третий фрейм заполним параметры: 
    • Проставляем в поле "Индекс" значение 2, (нумерация фреймов начинается с нуля);
    • В поле "Область поиска фрейма" указываем значение "Родительский фрейм";
    • В поле "Контекст" указываем контекст открытого браузера;
    • в поле "Область поиска фрейма" укажем значение "Родительский фрейм" (потому что сейчас фокус находится в основной странице).
       Image Modified

      Фрейм (на который переключились) содержит в себе два фрейма.

...


    • Image Modified

2. Опция Текущий фрейм - ищем фрейм в внутри текущего фрейма. Переключимся на фрейм с текстом "This is main page and content from any link will be displayed here". Это второй фрейм внутри текущего фрейма. Укажем параметры действия:

    • в поле "Контекст" укажем контекст открытого браузера
  • ,
    • ;
    • в поле "Индекс" укажем значение 1 (нумерация фреймов начинается с 0);
    • в поле "Область поиска фрейма" укажем значение "Текущий фрейм"  (ищем дочерний фрейм в текущем фрейм).

...

    • Image Modified
      Image Modified
      Далее, с помощью действие "Получить текст" получим текст из фрейма (см. приложенную к описанию схему робота).

3. Опция Вся страница выполним выполним переключение фокуса из фрейма на основную страницу. Для этого указываем опцию "Вся страница" и контекст открытого браузера. Остальные параметры оставьте пустыми. 
Image Modified
Выполним действие "Получить текст" из основной страницы (см. приложенную к описанию схему робота).

...


Image Modified

Задача 2

Зайти на сайт с фреймом https://www.w3schools.com/css/tryit.asp?filename=trycss_default, переключиться на него для дальнейшей работы с ним и получить текст из фрейма "My First CSS Example".  
Image Modified
Реализовать действие с использованием параметров "Имя", "Элемент" и опций "Область поиска".

Решение

Воспользоваться действиями "Открыть браузер", "Переключиться на фрейм", "Получить текст".

Реализация

  1. Собрать робота, состоящего из действий:
    Image Modified
  2. Настроить параметры для действия "Открыть браузер". 

  3. Image Removed
  4. Настроить параметр для действия "Переключиться на фрейм". 
    Image Modified
  5. Настроить параметры для действия "Получить текст". В поле "Элемент" необходимо указать элемент из которого необходимо получить текст. Подробнее о создании элементов в разделе: Создание Web-элементов
    Image Modified
  6. Нажать на кнопку "Старт" в верхней панели. 

Результат

Программный робот отработал успешно. 
Image Modified
В данном случае, если отключить действие "Переключиться на фрейм", то элемент не будет найден,  так как поиск элемента осуществляется в текущем документе, а сам элемент находится во вложенном.
  Image Modified