To dynamically handle the year in your XPath based on the current date, follow these steps:
1. Calculate the Dynamic Year Range
groovy
import java.time.Year
// Get current year
int currentYear = Year.now().value
int previousYear = currentYear - 1
String dynamicYear = "${previousYear} - ${currentYear}"
2. Create Dynamic Test Object
groovy
// Build XPath with dynamic year value
String dynamicXpath = "//span[(text() = '${dynamicYear}' or . = '${dynamicYear}')]"
// Create test object with dynamic XPath
TestObject dynamicYearObject = new TestObject('dynamicYearObject').addProperty('xpath', ConditionType.EQUALS, dynamicXpath)
// Use the dynamic test object
WebUI.verifyElementPresent(dynamicYearObject, 10)
Full Implementation:
groovy
import java.time.Year
import com.kms.katalon.core.testobject.TestObject
import com.kms.katalon.core.testobject.ConditionType
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
// Calculate dynamic year range
int currentYear = Year.now().value
String dynamicYear = (currentYear - 1) + " - " + currentYear
// Create dynamic test object
TestObject yearObject = new TestObject('Dynamic Year').addProperty('xpath', ConditionType.EQUALS,
"//span[(text() = '${dynamicYear}' or . = '${dynamicYear}')]")
// Verify element with dynamic year
WebUI.verifyElementPresent(yearObject, 10)
Explanation:
Year Calculation:
Year.now().value gets the current year (e.g., 2024)
currentYear - 1 gives the previous year (2023)
Format becomes “2023 - 2024”
Dynamic XPath Construction:
Uses string interpolation to insert dynamicYear into the XPath
Just a note that your statement with a “timeOut” of zero will always fail as it takes a moment for KS to check if your statement is solidly true or false. Zero gives it no time to check, so it will always fail. You can note that @dineshh’s answer has a solid “timeOut”. WebUI.verifyElementPresent(yearObject, 10)