Hi @Elly_Tran ,
I tried the code but katalon highlighted with some syntax. So I googled and searched in community, found some info and modified bits by bits, even then when execute the test hit error.
Please find below the error message.
---
Test Cases/DataDrivenTest eTravel FAILED.
Reason:
groovy.lang.MissingMethodException: No signature of method: static com.kms.katalon.keyword.excel.ExcelKeywords.getCellValueByIndex() is applicable for argument types: (org.apache.poi.xssf.usermodel.XSSFSheet, Integer, String) values: [Name: /xl/worksheets/sheet1.xml - Content Type: application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml, ...]
Possible solutions: getCellValueByIndex(org.apache.poi.ss.usermodel.Sheet, int, int)
at DataDrivenTest eTravel.run(DataDrivenTest eTravel:131)
at com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194)
at com.kms.katalon.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:119)
at com.kms.katalon.core.main.TestCaseExecutor.runScript(TestCaseExecutor.java:448)
at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:439)
at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:418)
at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:410)
at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:285)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:137)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:128)
at TempTestCase1718883040578.run(TempTestCase1718883040578.groovy:25)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
----
Also sharing with you the full code, hopefully helps.
import static com.kms.katalon.core.checkpoint.CheckpointFactory.findCheckpoint
import static com.kms.katalon.core.testcase.TestCaseFactory.findTestCase
import static com.kms.katalon.core.testdata.TestDataFactory.findTestData
import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject
import static com.kms.katalon.core.testobject.ObjectRepository.findWindowsObject
import com.kms.katalon.core.checkpoint.Checkpoint as Checkpoint
import com.kms.katalon.core.cucumber.keyword.CucumberBuiltinKeywords as CucumberKW
import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords as Mobile
import com.kms.katalon.core.model.FailureHandling as FailureHandling
import com.kms.katalon.core.testcase.TestCase as TestCase
import com.kms.katalon.core.testdata.TestData as TestData
import com.kms.katalon.core.testng.keyword.TestNGBuiltinKeywords as TestNGKW
import com.kms.katalon.core.testobject.TestObject as TestObject
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
import com.kms.katalon.core.windows.keyword.WindowsBuiltinKeywords as Windows
import internal.GlobalVariable as GlobalVariable
import org.openqa.selenium.Keys as Keys
import org.openqa.selenium.JavascriptExecutor as JavascriptExecutor
import org.openqa.selenium.WebDriver as WebDriver
import org.openqa.selenium.WebElement as WebElement
import com.kms.katalon.core.webui.driver.DriverFactory as DriverFactory
import com.kms.katalon.keyword.excel.ExcelKeywords as ExcelKeywords
WebUI.openBrowser('')
WebUI.maximizeWindow()
WebUI.navigateToUrl('https://abc.abc')
WebUI.waitForPageLoad(5, FailureHandling.STOP_ON_FAILURE)
WebUI.waitForElementClickable(findTestObject('DataDrivenTest eTravel/Page_Company/input_User Name_username'),
5)
WebUI.setText(findTestObject('Object Repository/DataDrivenTest eTravel/Page_Company/input_User Name_username'),
'abc.abc.com')
WebUI.waitForElementClickable(findTestObject('DataDrivenTest eTravel/Page_Company/input_Password_password'),
5)
WebUI.setEncryptedText(findTestObject('Object Repository/DataDrivenTest eTravel/Page_Company/input_Password_password'),
'sd3GT36GH53JUJ787HHwwmiO88VU2kkLXcpN1W/pbAUWu')
WebUI.waitForElementClickable(findTestObject('DataDrivenTest eTravel/Page_Company/button_SIGN IN'),
5)
WebUI.click(findTestObject('Object Repository/DataDrivenTest eTravel/Page_Company/button_SIGN IN'))
WebUI.waitForElementClickable(findTestObject('DataDrivenTest eTravel/Page_Company/button_Proceed'),
5)
WebUI.click(findTestObject('Object Repository/DataDrivenTest eTravel/Page_Company/button_Proceed'),
FailureHandling.OPTIONAL)
WebUI.waitForPageLoad(10, FailureHandling.STOP_ON_FAILURE)
//Some of the objects fetch data from excel file and loop until all rows in the test data file has been completed successfully
for (def rowNum = 1; rowNum <= findTestData('etRAVEL_TestData').getRowNumbers(); rowNum++) {
WebUI.waitForElementClickable(findTestObject('DataDrivenTest eTravel/Page_Company/a_PRODUCTS'),
5)
WebUI.mouseOver(findTestObject('Object Repository/DataDrivenTest eTravel/Page_Company/a_PRODUCTS'))
WebUI.waitForElementClickable(findTestObject('Object Repository/DataDrivenTest eTravel/Page_Company/a_Create New Quote'),
5)
WebUI.mouseOver(findTestObject('Object Repository/DataDrivenTest eTravel/Page_Company/a_Create New Quote'),
FailureHandling.STOP_ON_FAILURE)
WebUI.enhancedClick(findTestObject('DataDrivenTest eTravel/Page_Company/a_Create New Quote'))
WebUI.waitForElementPresent(findTestObject('DataDrivenTest eTravel/Page_Company/input_Intermediary Name_mat-input-10 - Copy'),
5)
WebUI.setText(findTestObject('DataDrivenTest eTravel/Page_Company/input_Intermediary Name_mat-input-10 - Copy'),
findTestData('eTravel_TestData').getValue(1, rowNum))
WebUI.waitForElementClickable(findTestObject('DataDrivenTest eTravel/Page_Company/span_CREATE NEW - Copy'),
5)
WebUI.click(findTestObject('DataDrivenTest eTravel/Page_Company/span_CREATE NEW - Copy'))
WebUI.waitForElementClickable(findTestObject('DataDrivenTest eTravel/Page_Company/input_Destination_mat-input-12 - Copy'),
5)
WebUI.setText(findTestObject('DataDrivenTest eTravel/Page_Company/input_Destination_mat-input-12 - Copy'),
findTestData('eTravel_TestData').getValue(2, rowNum))
WebUI.sendKeys(findTestObject('DataDrivenTest eTravel/Page_Company/input_Destination_mat-input-12 - Copy'),
Keys.chord(Keys.TAB))
WebUI.waitForElementClickable(findTestObject('DataDrivenTest eTravel/Page_Company/button_Annual'),
5)
WebUI.click(findTestObject('DataDrivenTest eTravel/Page_Company/button_Annual'))
WebUI.waitForElementClickable(findTestObject('DataDrivenTest eTravel/Page_Company/input_Group_next - 1'),
5)
WebUI.click(findTestObject('DataDrivenTest eTravel/Page_Company/input_Group_next - 1'))
//Following section is to fetch price from test data into a dummy object (non existence object in website)
//Then value in dummy object based on IF-ELSE statement, meet condition will click the respective button
// Test data excel file
String excelFilePath = 'C:/Users/emlearn/Desktop/eTravel_TestData.xlsx'
String sheetName = 'Sheet1'
// Get the workbook and sheet
def workbook = ExcelKeywords.getWorkbook(excelFilePath)
def sheet = ExcelKeywords.getExcelSheet(workbook, sheetName)
// Get the cell value
def priceValue = ExcelKeywords.getCellValueByIndex(sheet, rowNum, 'price')
if (priceValue.equals('100')) {
WebUI.waitForElementClickable(findTestObject('DataDrivenTest eTravel/Page_Company/span_100'), 5)
WebUI.click(findTestObject('Object Repository/DataDrivenTest eTravel/Page_Company/span_100'))
}
if (priceValue.equals('200')) {
WebUI.waitForElementClickable(findTestObject('DataDrivenTest eTravel/Page_Company/span_200'), 5)
WebUI.click(findTestObject('Object Repository/DataDrivenTest eTravel/Page_Company/span_200'))
} if (priceValue.equals('300')) {
WebUI.waitForElementClickable(findTestObject('DataDrivenTest eTravel/Page_Company/span_300'), 5)
WebUI.click(findTestObject('Object Repository/DataDrivenTest eTravel/Page_Company/span_300'))
}
else {
// Handle unexpected price values
println "Unrecognized price value: " + priceValue
}
WebUI.waitForElementClickable(findTestObject('DataDrivenTest eTravel/Page_Company/input_Group_next - 2'),
5)
WebUI.click(findTestObject('DataDrivenTest eTravel/Page_Company/input_Group_next - 2'))
WebUI.waitForElementPresent(findTestObject('DataDrivenTest eTravel/Page_Company/input_NRICFIN Number_finNo'),
5)
WebUI.setText(findTestObject('Object Repository/DataDrivenTest eTravel/Page_Company/input_NRICFIN Number_finNo'),
findTestData('eTravel_TestData').getValue(4, rowNum))
WebUI.waitForElementPresent(findTestObject('DataDrivenTest eTravel/Page_Company/input_Given Name_givenName'),
5)
WebUI.setText(findTestObject('Object Repository/DataDrivenTest eTravel/Page_Company/input_Given Name_givenName'),
findTestData('eTravel_TestData').getValue(5, rowNum))
WebUI.waitForElementPresent(findTestObject('DataDrivenTest eTravel/Page_Company/input_Family Name_familyName'),
5)
WebUI.setText(findTestObject('Object Repository/DataDrivenTest eTravel/Page_Company/input_Family Name_familyName'),
findTestData('eTravel_TestData').getValue(6, rowNum))
WebUI.waitForElementPresent(findTestObject('DataDrivenTest eTravel/Page_Company/input_Date of Birth_mat-input-15'),
5)
WebUI.setText(findTestObject('Object Repository/DataDrivenTest eTravel/Page_Company/input_Date of Birth_mat-input-15'),
findTestData('eTravel_TestData').getValue(7, rowNum))
WebUI.waitForElementClickable(findTestObject('DataDrivenTest eTravel/Page_Company/button_MALE_1'),
5)
WebUI.click(findTestObject('Object Repository/DataDrivenTest eTravel/Page_Company/button_MALE_1'))
WebUI.waitForElementPresent(findTestObject('DataDrivenTest eTravel/Page_Company/input_Postal Code_postalCode'),
5)
WebUI.setText(findTestObject('Object Repository/DataDrivenTest eTravel/Page_Company/input_Postal Code_postalCode'),
findTestData('eTravel_TestData').getValue(8, rowNum))
WebUI.waitForElementPresent(findTestObject('DataDrivenTest eTravel/Page_Company/input_Phone Number_phoneNo'),
5)
WebUI.setText(findTestObject('Object Repository/DataDrivenTest eTravel/Page_Company/input_Phone Number_phoneNo'),
findTestData('eTravel_TestData').getValue(9, rowNum))
WebUI.waitForElementPresent(findTestObject('DataDrivenTest eTravel/Page_Company/input_Email_email'),
5)
WebUI.setText(findTestObject('Object Repository/DataDrivenTest eTravel/Page_Company/input_Email_email'),
findTestData('eTravel_TestData').getValue(10, rowNum))
WebUI.waitForElementClickable(findTestObject('DataDrivenTest eTravel/Page_Company/input_Group_next - 3'),
5)
WebUI.click(findTestObject('DataDrivenTest eTravel/Page_Company/input_Group_next - 3'))
WebUI.waitForElementClickable(findTestObject('DataDrivenTest eTravel/Page_Company/label_I accept the Terms and Conditions sta_fef253'),
5)
WebUI.click(findTestObject('Object Repository/DataDrivenTest eTravel/Page_Company/label_I accept the Terms and Conditions sta_fef253'))
WebUI.waitForElementClickable(findTestObject('DataDrivenTest eTravel/Page_Company/input_Group_next - 4'),
5)
WebUI.click(findTestObject('DataDrivenTest eTravel/Page_Company/input_Group_next - 4'))
WebUI.waitForElementClickable(findTestObject('DataDrivenTest eTravel/Page_Company/input_Group_next - 5'),
5)
WebUI.click(findTestObject('DataDrivenTest eTravel/Page_Company/input_Group_next - 5'))
WebUI.waitForElementClickable(findTestObject('DataDrivenTest eTravel/Page_Company/button_OK'),
5)
WebUI.click(findTestObject('Object Repository/DataDrivenTest eTravel/Page_Company/button_OK'))
WebUI.waitForElementClickable(findTestObject('DataDrivenTest eTravel/Page_Company/button_View Quotation'),
5)
WebUI.click(findTestObject('Object Repository/DataDrivenTest eTravel/Page_Company/button_View Quotation'))
WebUI.waitForPageLoad(10, FailureHandling.STOP_ON_FAILURE)
}
WebUI.mouseOver(findTestObject('Object Repository/DataDrivenTest eTravel/Page_Company/svg_FAQ_svg-inline--fa fa-user'))
WebUI.mouseOver(findTestObject('Object Repository/DataDrivenTest eTravel/Page_Company/button_Logout'))
WebUI.click(findTestObject('Object Repository/DataDrivenTest eTravel/Page_Company/button_Logout'))
WebUI.closeBrowser()