Passing multiple variables to an object in Katalon Studio

With the success of our first automation project, work has begun on automating another site. Based on the techniques already learned, solutions are being code a lot quicker than the first time around. One of the new methods to employ for this project is to create multi-parameter objects. For the first project there were lots of individual objects defined to retrieve specific pieces of information. This worked just fine, but it made for a lot of objects and a lot of maintenance. The goal this time is to try and slim that down.

The most common multi-parameter object is for a table where the row and column can be passed.

The object definition should look familiar and is represented by:

//div[@id='table']/table/tbody/tr[${row}]/td[${column}]

To read a cell from the table, the row and column can be passed as numbers, such as:

tempText = WebUI.getText(findTestObject('table-DataTable', [('row') : 1, ('column') : 3]))

To read the entire table, variables are passed in a set of FOR loops, one for row, one for column:

tempText = WebUI.getText(findTestObject('table-DataTable', [('row') : row, ('column') : column]))

The parameter can be used for the name of an object as well. For a particular set up we have, there are 4 filters. Each filter has a corresponding table. It’s now possible to make one object that represents all 4 tables and set up parameters for the table name, rows and columns.

The table is defined in the following way, where the name gets a parameter:

//table[@id='DataTable_Name_${index}']/tbody/tr[${row}]/td[${column}]

To select the correct table, it’s index number is passed for the variable, “index”. The first table on the site has a number of 0. For the code below, the table number is chosen, then column 3 of each row is read and stored.

tempText=WebUI.getText(findTestObject('table-DataTable', [('index') : 0, ('row') : loop, ('column') : 3]))

The same method can be used for Tabs, Click actions and List Items.

For example, a button object is created to take a parameter for “buttonIndex”. There are 4 buttons on the page, so to pick the correct one, the value is passed in. In this example, the second button on the page is clicked.

WebUI.click(findTestObject('buttonName',[('buttonIndex') : 2]))

Instead of making separate objects for each column, button, or set of tabs, a single object can be created that accepts multiple parameters. This cuts down on both the number of objects and the amount of code needed to interact with those objects. It’s merely an extension of passing a variable to an object, but the exact syntax can be a little tricky until you see exactly what it looks like.

            

Other articles of interest:

Leave a Reply

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

Recent Comments
  • How To Disable the Quicken Registration Prompt (24)
    • Joe SR>: My monthly income is deposited into my Credit Union account. I use debit whenever possible. I write checks manually and mail them. I use Quicken 2012 off-line only. I have entered all my money and investment accounts. I...
    • Prtet: Never say never….every time I swear I will never use Quicken again, I discover that there are still no viable alternatives. Amazing that there is no decent personal finance software.
    • Joe D.: Holding CTRL + Shift keys and selecting On Line | One Step Update from the main menu worked for my Quicken 2004. I’m grateful that you wrote a synopsis (“Simply put, …”) just beneath the link to the blog...
    • Susan Long: I bought my quicken disc in the beginning and it came with a registration number. I rang the helpline and they gave me the code to put in and talked me through it. It you downloaded your version then you don’t own it...
    • Peter: You might consider running your old version of Quicken on an ancient computer. This is what I have done for years. The newer versions are fraught with problems- criminal, in my opinion. One version made mathmatical errors when...
    • Roslyn Chamberlain: Can I stop the countdown in quicken 2001 says only 8 sessions left. and what will happen after?
  • Parsing Strings in Katalon – Split, Substring and Readlines (1)
    • Ellen: Thanks for sharing!! I like your contributions to Katalon topics.
  • Working with Dates and Date Formatting in Katalon Studio (6)
    • Ajoo: Thank you for the details. How do i remove leading “0” from dates. i.e. while formatting i receive 04/21/2019, but i need 4/21/2019. (same applies for date)
  • What is Katalon Studio? A Distro of Selenium, Groovy and Eclipse (1)
    • Mahesh: Looking for more posts on katalon studio.your katalon stuffs are always exiting
  • Simple wildcard searches for pattern matching (2)
    • Don Pedro: For that scenario it seems .contains would be your choice. For example, variable.contains(‘amazo n.com’) to see if the url had amazon.com. In that case, www.amazon.com, forum.amazon.com, retail.amazon.com would all...
    • Jony: Hi, How can I use a wild card to assert a URL is the one I want. I just want to verify the domain ==expected but not anything after it. Tried * but not working and only works when I have full URL.
  • Create a Dynamic Object at Runtime (2)
    • Saish: How to add shadow root parent to this runtime object..
    • Jeremy Brien: I appreciate this! I saw this post on LinkedIn this morning and was able to find a use case for it! I found that defining my xpath with an iterable variable allows me to loop through and capture text from tables created...
  • Output status messages and test information by writing to the Log File Viewer in Katalon Studio (2)
    • Don Pedro: That would be things like: log.logWarning(‘The import date listed on the site is: ‘ + importDate) log.logWarning(‘The value from the site is: ‘ + salesFigure) log.logWarning(‘Filter Results for ‘ +...
  • Setting up a repeatable Search Method in Katalon Studio (1)
    • RJ: Thanks a lot! This is very helpful 🙂