Filling forms with random numbers in Katalon Studio
If you’re filling in forms, inevitably there will be a need to use random numbers. For me, since I’m dealing with a sales dashboard, this means entering dollar figures and percentage values. It’s certainly possible to enter the same figure over and over again, but it’s just as easy to use a few lines of code and generate some random data.
A basic form of the random number command can look like this:
randomNumber=rnd.nextInt(10) – A random number between 0 and 10
This will create a simple random number between 0 and 10. That unto itself is quite fine and can be used for any number of applications. It could be appended to the end of text to make a Title, Subject or similar a little more random. It’s a good start, but there is certainly more that can be done.
To return my example, I want to enter sales figures that range from 100,000 to 250,000. I also want to enter percentages that range from 3 to 15 percent.
There are basically two lines to creating a random number. The first is to initialize the random number. The next is to define the random number within the range. To create the two numbers I want for the form, I can use these lines:
Random rnd = new Random() – Initialize the random number generator
randomNumber = (10000 + rnd.nextInt(250000)) – Pick a number between 10,000 and 250,000. This is my sales figure.
randomNumber = (1 + rnd.nextInt(15)) – Pick a number between 1 and 15. This is my margin figure.
When I want to fill down the table, I can use a SetText command similar to the following: WebUI.setText(findTestObject(‘Page_/Sales Plan Budget/New Prospect/Category Margin Column’, [(‘Variable’) : loop]), String.valueOf(randomNumber))
To break down the parts of the command.
We first have the SetText command
Next comes the Object with the reference to where the fields exists on the page
Since I have two columns of numbers, I will use a loop (from 1-10) to go down the page. This is followed by passing the value of the loop counter into the XPath reference, for example (tr[loop]td[1])
Finally, the text of the random number is passed. For the site I’m working with, I need to convert this to a string in order for it be accepted correctly. The String.ValueOf() passes the random number as a string.
There are dozens and dozens of variations on how to create a random number. Some examples use functions while others are set up to create “more randomness”. For entering a number into a sales field, this example is more than sufficient and while those other examples are neat, they overly complicate the matter.
When you are setting up randomNumber is this a new keyword or a new variable? I am trying to randomly generate unique socials and can’t seem to connect my generator to my Set Text.
randomNumber is the variable that holds the result of generating a new random number.
Depending on how things work on your site, you might need to convert the number to a String before it’s recognized correctly.
WebUI.setText(findTestObject(‘ObjectName’), String.valueOf(randomNumber))
We created a handy random string generator custom keyword. The method takes in a string for the type of string you want, and an integer for the length. Looks like this:
static String RANDOM_ALPHANUM = “ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890”
static String RANDOM_ALPHANUM_SPECIAL = “ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#\$%^&*()”
static String RANDOM_ALPHA_SPACES = “ABCDEFG HIJKLMNOP QRS TUV WXYZ”
static String RANDOM_ALPHA_HARDRETURNS = “ABCDEFG\nHIJKLMNOP\nQRS\nTUV\nWXYZ”
static String RANDOM_ALPHA_ONLY = “ABCDEFGHIJKLMNOPQRSTUVWXYZ”
static String RANDOM_ALPHA_UPPER_AND_LOWER = “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz”
static String RANDOM_NUM = “0123456789”
static String RANDOM_SPECIAL = “!@#\$%^&*()”
@Keyword
def String randomStringGenerator(Integer stringLength, String type) {
//string ‘type’ passed in determines which type of chars are generated
def CHARS = type
StringBuilder string = new StringBuilder();
Random rnd = new Random();
while (string.length() < stringLength) { // length of the random string, uses an int passed in by test
int index = (int) (rnd.nextFloat() * CHARS.length())
string.append(CHARS.charAt(index))
}
String randomString = string.toString()
return randomString
}