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

Ключ

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

...

Действие выполняет переключение фокуса управления на заданный фрейм на текущей странице. Переключение на фрейм используется в тех случаях, когда необходимо обратиться к веб-элементам, расположенным внутри фрейма.Фрейм Фрейм отдельный, законченный HTML-документ, который вместе с другими HTML-документами может быть отображён в окне браузера. В настройках действия поля "Элемент", "Имя" и "Индекс" есть 3 разных способа обратиться к нужному фрейму. Если заполнены все три поля, то робот по порядку обходит параметры и пытается по ним искать. Если одна из проверок по порядку вернет ошибку, то действие завершит работу с ошибкой. Соответственно, если имя существует, а веб-элемент нет, но все равно указан, то действие отобразит ошибку. Внутрь фрейма могут быть также вложены фреймы, и в них тоже могут быть вложены фреймы. Фреймы разбивают веб-страницу на отдельные миникадры, расположенные на одном экране, которые являются независимыми друг от друга. Каждое окно может иметь собственный адрес.

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 действий переключения на фрейм, последовательно в поле можно выбрать 3 варианта значений.   Текущий фрейм - поиск в рамках текущего фрейма (поиск следующего будет в текущем). Родительский фрейм - поиск фрейма на уровень выше. Вся страница - поиск в рамках всей страницы на которой есть фреймы.

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

  1. Родительский фрейм - ищем фрейм на уровень выше. На сайте есть 3 фрейма. Например, для переключения на третий фрейм необходимо заполнить параметры следующим образом: 
    Проставляем в поле "Индекс" значение 2, так как нумерация начинается с нуля. В поле "Область поиска фрейма" указываем значение "Родительский фрейм". В поле "Контекст" указываем контекст открытого браузера. 
     Image Removed
    Данный фрейм (на который переключились) включает в себя два фрейма. 
    Image Removed
  2. Текущий фрейм - ищем фрейм в рамках текущего фрейма. Например, необходимо переключиться на фрейм с текстом "This is main page and content from any link will be displayed here". Для этого необходимо указать параметры следующим образом:
    в поле "Контекст" указать контекст открытого браузера, в поле "Индекс" указать значение 1 (нуммерация начинается с 0), в поле "Область поиска фрейма" указать значение "Текущий фрейм"  (так как мы ищем один из фреймов в рамках текущего фрейма). Далее,  помощью действие "Получить текст" возможно получение текста из фрейма (см. приложенную к описанию схему робота). 
     Image Removed
    Image Removed

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

Image Removed

Image Removed

Настройки

Свойство

Описание

Тип

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

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

Параметры

Контекст

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

Robin.Selenium

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

Да

Элемент

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

Robin.WebElement

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

Нет

Имя

Имя фрейма

Robin.String

iframeResult

Нет

Индекс

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

Robin.Numeric

1

Нет

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

Область поиска фрейма. Доступно 3 варианта: текущий фрейм - поиск в рамках текущего фрейма; родительский фрейм - поиск в рамках родительского фрейма; вся страница - поиск в рамках всей страницы.

Robin.String

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

Нет

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

...

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

Повторно перейти на текущую вкладку возможно также с помощью действия "Переключиться Переключиться на вкладку".

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

Image Modified

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

Image Modified

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

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

...

    • В поле "Контекст" указываем контекст открытого браузера,
    • в поле "Область поиска фрейма" укажем значение "Родительский фрейм" (потому что сейчас фокус находится в основной странице)


 Image Added

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

Image Added

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

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

 
 Image Added


Image Added


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

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

Image Added

Выполним действие "Получить текст" из основной страницы (см. приложенную к описанию схему робота). 

Image Added

Пример использования действия с использованием параметров "Имя", "Элемент" и опций "Область поиска": 

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

Image Modified

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

...

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

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


  5. Нажать на кнопку "Старт" в верхней панели. 

...

Программный робот отработал успешно. 

Image Modified

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

Image Modified