Очень распространенным типом элемента управления, используемым на веб-сайте, является iframe HTML. И этот контроль должен обрабатываться особым образом при тестировании. В этой статье показано, как правильно обрабатывать фреймы в Katalon Studio.

Что такое iframe?

iframe (Inline Frame) — это HTML-документ, встроенный в другой HTML-документ. HTML-элемент iframe часто используется для вставки содержимого из другого источника, например рекламы, на веб-страницу.

Почему важно знать, как тестировать iframe?

Проверка текста и объектов в iframe может быть сложной задачей. Например, даже если вы видите текст, отображаемый в iframe, средства автоматизации могут не обнаружить этот текст. Вы должны сообщить своему сценарию, как пройти через структуру iframe веб-сайта и выбрать правильный iframe, в котором присутствует текст и его объект.

Пример 1

1. Учитывая, что вы хотите захватить текстовое поле комментария к определенному вопросу на форуме Katalon (это текстовое поле является iframe), вы можете использовать шпион веб-объектов Katalon и увидеть, что он может обнаружить iframe в выделенной красным области. .

2. После захвата iframe комментария Katalon показывает все его дочерние элементы, которые вы можете увидеть в диалоговом окне Object Spy, как показано ниже:

3. Когда вы сохраняете захваченный объект в Katalon Studio, его iframe также включается. Это показано на следующем снимке экрана:

4. Затем вы можете приступить к установке текста в поле «Комментарий», указав дочерний элемент для ключевого слова «Установить текст», как описано ниже:

Пример 2

1. Учитывая, что вы хотите захватить пример перетаскивания JQueryUI (этот перетаскиваемый элемент управления является iframe), как показано на снимке экрана ниже, вы можете перетащить объект «Перетащите меня вокруг» в другие области iframe.

2. Используйте Object Spy для захвата iframe, как обычно. Object Spy может обнаруживать, захватывать iframe и соответственно отображать все элементы iframe.

3. Когда вы сохраняете захваченный объект в Katalon Studio, iframe также включается в качестве родительского элемента объекта. Это показано на следующем снимке экрана (обратите внимание, что при необходимости вы можете снять флажок для использования родительского iframe):

4. Учитывая ситуацию, когда вы решили не указывать родительский iframe для элемента, чтобы взаимодействовать с элементом, вам нужно использовать ключевое слово Переключиться на фрейм, чтобы Katalon сфокусировался на родительском iframe, прежде чем сможет взаимодействовать. с элементом.

В приведенном ниже примере кода показано, как переключиться на родительский фрейм перед использованием действия перетаскивания элементов внутри iframe:

import com.kms.katalon.core.annotation.SetUp as SetUp

import com.kms.katalon.core.annotation.TearDown as TearDown

import com.kms.katalon.core.model.FailureHandling as FailureHandling

import com.kms.katalon.core.testobject.ObjectRepository as ObjectRepository

import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords as Mobile

import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS

import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject

import static com.kms.katalon.core.testdata.TestDataFactory.findTestData

import static com.kms.katalon.core.testcase.TestCaseFactory.findTestCase

import com.kms.katalon.core.testcase.TestCase as TestCase

import com.kms.katalon.core.testdata.TestData as TestData

import com.kms.katalon.core.testobject.TestObject as TestObject

import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUiBuiltInKeywords

import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI

import internal.GlobalVariable as GlobalVariable

'Open browser and navigate to jQuery UI page'
WebUI.openBrowser('http://jqueryui.com/')

'Maximize current browser window'
WebUI.maximizeWindow()

'Click on \'Draggle\' link'
WebUI.click(findTestObject('Page_jQuery_Homepage/lnk_Draggable'))

'Switch to iframe of Demo panel'

WebUI.switchToFrame(findTestObject('Page_jQuery_Drag and Drop Example/ifr_Demo Frame'),

GlobalVariable.G_Timeout_Small, FailureHandling.STOP_ON_FAILURE)

'Drag and drop iframe into other position'

WebUI.dragAndDropByOffset(findTestObject('Page_jQuery_Drag and Drop Example/div_Frame_Draggable'),

200, 38)

'Switch back to current window'

WebUI.switchToDefaultContent()

'Click on \'Droppable\' link'

WebUI.click(findTestObject('Page_jQuery_Homepage/lnk_Droppable'))

'Switch to iframe of Demo panel'
WebUI.switchToFrame(findTestObject('Page_jQuery_Drag and Drop Example/ifr_Demo Frame'),

GlobalVariable.G_Timeout_Small, FailureHandling.STOP_ON_FAILURE)

'Drag the left rectangle and Drop it the right-side one'
WebUI.dragAndDropToObject(findTestObject('Page_jQuery_Drag and Drop Example/div_Frame_Draggable'),

findTestObject('Page_jQuery_Drag and Drop Example/div_Frame_Droppable'), FailureHandling.STOP_ON_FAILURE)

WebUI.closeBrowser()

Общие исключения

Отмечено, что исключения NoSuchFrameException или InvalidSwitchToTargetException возникают, когда целевой кадр, на который нужно переключиться, не существует.

Узнайте больше руководств по инструментам автоматизированного тестирования на странице Учебники по Katalon или здесь.