By parameterizing test objects, you can Use either Local or Global variables to Dynamically Update the locators of test objects. In the following situations, this feature is useful:

You want to conduct a bulk action on a collection of related components without defining several Test Objects, like checking many checkboxes.
However, because there are several related objects, you cannot specify which one you want to use as the locator in advance in test scripts.

 

Prerequisites:

You are expected to write the code in the Script view. You should also have a basic understanding of Java and Groovy.

Static Object:

Handling static objects is relatively simple. Simply pick New Test Object from the Object Repository and enter your preferred selector.

Dynamic Object:

It can be a little trickier to work with dynamic objects than static ones, but it’s not as complex as it would seem. Although there is a Katalon method for handling parameterized objects, I want to discuss additional strategies that might be used.

Dynamic objects are those whose properties vary in a certain way based on established business rules. To Handle Dynamic Objects, Katalon Studio offers Parameterizing Test Object properties. The use of this feature is demonstrated in the example below.

We construct the “$id” variable for the value of the id property. Test objects can be parameterized using a Variety of selection techniques.

Attributes

 

XPath

CSS

 

Switching To the Script View

After the property has been declared, you may switch to the Script View and change the property’s apparent value. Users typically want to refer to data files or pass the property value as a variable.

The following General Syntax can be used to find a test object using a dynamic property:

findTestObject(‘{your test object}’, [(‘{property}’) : ‘{value of property}’])

 

For example:

One Dynamic Property:

findTestObject(‘Page_Login/txtUserName’, [‘id’ : ‘48415648’])

 

Two Dynamic Properties:

findTestObject(‘Page_Login/txtUserName’, [‘id’ : ‘48415648’, [(‘name’) : ‘controler14585’]])

 

Let’s take an example of an XPath

Our goal is to convert our global variables into the dynamic variables using parameterized testObject

findTestObject(‘Page_Login/txtUserName’, [‘id’ : ‘48415648’, [(‘name’) : ‘controler14585’]])

 

The above code can be converted into Parameterized TestObject as:

//span[@data-component-type=${component}]/div/div[${index}]//h2//span

 

Define Your Test Object

import com.kms.katalon.core.testobject.ConditionType
import com.kms.katalon.core.testobject.TestObject
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI

import mypackage.MySelectors
String dynamicId = ‘Katalon123’
String xpath = String.format(MySelectors.dynamicIdPath, dynamicId)
TestObject to = new TestObject(“objectName”)
to.addProperty(“xpath”, ConditionType.EQUALS, xpath)
WebUI.click(to)

 

Create a Separate Keyword for Dynamic Selectors

package mypackage

public class MySelectors {
public static final String dynamicIdPath = ‘//div[@id=”%s”]’
}

 

Create a Method That Returns a Dynamic Test Object

package mypackage

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

public class MySelectors {
public static final String dynamicIdPath = ‘//div[@id=”%s”]’
public static TestObject getMyTestObject(String selectorType, String selectorValue) {
TestObject to = new TestObject()
to.addProperty(selectorType, ConditionType.EQUALS, selectorValue)
return to
}
}

 

Our Test Case will Look like this:

import com.kms.katalon.core.testobject.ConditionType
import com.kms.katalon.core.testobject.TestObject
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
import mypackage.MySelectors

String dynamicId = ‘Katalon123’
String xpath = String.format(MySelectors.dynamicIdPath, dynamicId)
WebUI.click(MySelectors.getMyTestObject(“xpath”, xpath))

We may call our new method directly using the standard Katalon keywords because it returns the TestObject.

Conclusion: Congratulations, you now know how to Parameterize Web Test Objects; brief about Static and Dynamic objects. We now also know how to convert our static objects into dynamic objects and Run Our Script with the help of those objects.

Happy Coding!