Checking for Page Load with a Custom Keyword

While looking through my code, I decided to set up a single validation test that would check to make sure the page I wanted to work with loaded correctly. Instead of repeatedly using 10-15 lines to do it a few different ways, it seemed the better choice would be to create a Custom Keyword and use one line of code to call it each time.

To that end, I set up this simple, but rather effective Custom Keyword that looks for header text on the page I’m trying to get to. I set up the test to accept my chosen text as a parameter so I can pass it anything.

For each page I go to, there is some sort of header text that identifies the page. It may say Profile or Customer or Sales, but there is something I can use for validation.

I created the following Custom Keyword that simply looks for the header text I pass to it. For example, when the page is loaded, look for the text My Profile on it. If it’s there, the page loaded and the text will execute as expected.

If that text doesn’t appear, meaning some sort of problem has occurred, I get the title of the page, log an error and stop execution. Again, it’s a pretty simple test, but it’s proving quite effective.

@Keyword

def checkPageLoad(String findText) {
/* Confirm the correct page has loaded by looking for the requested text
* The search text is passed to the Keyword from the calling statement
* If the text is missing, determine the kind of error and display more meaningful text
*/
def elementVisible = WebUI.verifyTextPresent(findText, false, FailureHandling.OPTIONAL)
if (elementVisible == false) {
//Get the title of the page and determine the kind of error
def title = WebUI.getWindowTitle()
log.logError('ERROR: The requested page did not load with the following error:= ' + title )
if (title=='There was an error'){
log.logError('ERROR: There is a Data Inconsistency Error')
} else {
log.logError('ERROR: The page could not be found - 404 error')
}
log.logWarning('--- The test ended unexpectedly with errors ---')
KeywordUtil.markFailedAndStop('ERROR: Unable to load the requested page - Test has failed')
}
}

To quickly explain the test:

It uses the WebUI.verifyTextPresent to find the text I passed.

If that text does not appear, it gets the WindowTitle which has an error message.

Based on the page title, one of two error conditions has occurred.

An error notice is written to the log file and the test is marked as Failed.

To call the Keyword and pass it the text I’m expected, I use this:

CustomKeywords.'errorCheck.validateSalesDashboard.checkPageLoad'('My Profile')

If the words, “My Profile” appear on the page, the test runs as normal. If they are missing, the error messages are logged and the test is halted. This gives me a way to make sure each page I interact with loads correctly and that the test is working with the correct page.

This Keyword is now called dozens of times from within my Test Cases. Additionally, I can change this in one source file rather going to each to make a modification. I have saved time and shaved off a few hundred lines worth of code.

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 (16)
    • Dave: Works for Quicken 2007 too. Thanks, Gina!
    • Charlie Fellenbaum: Yay, thanks, and that worked for Quicken 2006 as well.
    • Ken: This didn’t work for me. I have 2006. I installed on a new laptop. I must have registered before, don’t remember. I tried to register this time, but got an error message. I’d rather not registered, though. I use...
    • Neil Murphy: I discovered that early on. I’m using 2001.
    • Jeremy: Thank you so so so much. I am still using Quicken 2010 because Intuit didn’t want to properly support users abroad anymore (never mind that they only link to US banks for transaction downloads; they didn’t want my...
  • Quasi Performance/Load Testing with Katalon Studio (1)
    • Anthony: I have done this with 100 plus machines at the same time and it worked well and provided some useful feedback.
  • A Try Catch example in Katalon Studio (3)
    • Venkatesh: Hi Don Pedro Can you share me sample project ….which consist of basic to advanced stuff…If your github or gitlab url aso present please share… As I am beginer to this I need to learn lot
    • Don Pedro: Hi Lucas. Thank you for the kind comments. I would be happy to help. Let me know how I could be of assistance.
    • Lucas: Thanks for sharing a lot of Katalon tips and tricks. The Katalon team highly appreciate your support and feedback. To make Katalon Studio better and be the best free automation solution for testing community, we wish to coordinate...
  • Securely storing passwords and login details with Set Encrypted Text in Katalon Studio (1)
    • Agus: Hi Don, Is there a way to set the encrypted text to be used in the ‘WebUI.authenticate̵ 7; method? Basically I am trying to encrypt the password that is passed to the ‘WebUI.authenticate̵ 7; method. Thank you.
  • Katalon Studio – Manual View – The start of a test script (2)
    • ben: Hello Don Great Website. Keep up the work. I learnt a lot. cheers Ben.
    • Lucas: Hi Don Pedro, Thanks for sharing a lot of great articles related to Katalon Studio and Selenium. I am Lucas from Katalon team. From your point of view, we’ve learnt alot to improve our product and add more valuable features...
  • Another success with Katalon Studio (1)
    • Mahesh Joshi: Hi Don, I just started following your blog in regards to katalon. I want to introduce katalon studio at my work we do manual testing at work at the moment. What approach I should use for proof of concept with katalon for...
  • What went wrong with Crime City? (34)
    • G D: One thing I have noticed is the awkwardness of items and the attack points and how you can earn them. I was pretty pathetic with attack points and then I played that limited time boss and got weapons that had attack points in the...
  • Disable the Quicken 2012 Registration Prompt (1)
    • Scott: Thanks this worked great and is better then having to upgrade to a subscription!