Passing Object Names as String Variables in Katalon Studio

While working on a Custom Keyword, I noted the code could be even more modular if I was able to pass in the object name. It doesn’t need to be an object, just the path to the object in the Object Repository. As a simple example, take the code to read the value from a Select or Input field. The code is the same except for the referenced object.
The code would look like:

int resultsPerPage=WebUI.getAttribute(findTestObject('Sales Data/Sales Table/select-Results Per Page'),'value').toInteger()

With that in mind, we could create a variable with the path, then call the Custom Keyword with that variable. The code would then look like:

objectPath="Sales Data/Sales Table/select-Results Per Page"
CustomKeywords.'commonCode.DataCollection.getResults'(objectPath)

We could then change the path and call the Keyword again, still using the same code.
As a slightly more involved example, we have a page with three sets of filters. Each row has a different definition which meant three objects in the repository. When setting up code to manipulate those filters, everything is the same except for the object name. In order to verify all three rows of filters, 3 code blocks would be needed.
However, setting a variable to the path of the object means the code can be re-used.

//Validate the second row of filters
for (loop = 1; loop <=3; loop++) {
WebUI.click(findTestObject(filterName)
CustomKeywords.'commonCode.verifyFilter.verifyTableData'(objectPath, loop, filterType[loop], filterDescriptionText[loop])
WebUI.delay(2)
}

It would also be possible to make a List of path names and refer to that as well.
This may not be the best or most effective way to work with objects, but it’s very straightforward and easy to understand. This has come up a couple of times already where I’ve been able to substitute the object path and parameterize larger portions of my code blocks.

Other articles of interest:

Leave a Reply

Your email address will not be published. Required fields are marked *

Recent Comments