fap
October 28, 2019, 9:38am
1
Hello,
I’m trying to generate random email with custom keywords, bu I have this error.
anyone can help me?
Reason: groovy.lang.MissingPropertyException: No such property: CustomKeywords for class
10-28-2019 12:10:45 PM randomEmail
Elapsed time: 1,625s
carrier.invita_utente.randomEmail:69
randomEmail FAILED.
Reason:
groovy.lang.MissingPropertyException: No such property: CustomKeywords for class: carrier.invita_utente
at carrier.invita_utente.randomEmail(randomEmail.groovy:69)
at ✽.randomEmail
@Then("Invito un utente")
def Invito_un_utente() {
Mobile.setText(findTestObject('Carrier/28-invita utente/android.widget.EditText0 - Inserisci la ragione sociale dellazienda'),
'pittigghiu', 0)
String Mail = CustomKeywords.'com.question.RandomEmail.getEmail'('testing', 'testing.test')
Mobile.sendKeys(findTestObject('Object Repository/Carrier/28-invita utente/android.widget.EditText0 - Inserisci le-mail dell'), Mail)
Mobile.tap(findTestObject('Carrier/28-invita utente/android.widget.Button0 - CONFERMA'), 0)
Mobile.tap(findTestObject('Carrier/28-invita utente/android.widget.TextView0 - OK'), 0)
Mobile.closeApplication()
}
custom k.
public class RandomEmail {
@Keyword
public String getEmail(String suffix,String prefix){
int randomNo = (int)(Math.random() * 1000);
return suffix + randomNo + "@" + prefix;
}
Hi @fap
Can you confirm where you have the RandomEmail.groovy
file saved? It should be in the Keywords folder, looking something like this:
And the code for the keyword should look something like this (paying attention to the package
and import
parts):
package com.question
import com.kms.katalon.core.annotation.Keyword
public class RandomEmail {
@Keyword
public String getEmail(String suffix,String prefix){
int randomNo = (int)(Math.random() * 1000);
return suffix + randomNo + "@" + prefix;
}
}
– Chris
fap
October 28, 2019, 1:59pm
4
hello @Chris_Trevarthen thank you you very much
the custom k. it’s right there.
and the code is similar, this is it
package custom
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 com.kms.katalon.core.annotation.Keyword
import com.kms.katalon.core.checkpoint.Checkpoint
import com.kms.katalon.core.checkpoint.CheckpointFactory
import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords
import com.kms.katalon.core.model.FailureHandling
import com.kms.katalon.core.testcase.TestCase
import com.kms.katalon.core.testcase.TestCaseFactory
import com.kms.katalon.core.testdata.TestData
import com.kms.katalon.core.testdata.TestDataFactory
import com.kms.katalon.core.testobject.ObjectRepository
import com.kms.katalon.core.testobject.TestObject
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords
import internal.GlobalVariable
import MobileBuiltInKeywords as Mobile
import WSBuiltInKeywords as WS
import WebUiBuiltInKeywords as WebUI
import org.openqa.selenium.WebElement
import org.openqa.selenium.WebDriver
import org.openqa.selenium.By
import com.kms.katalon.core.mobile.keyword.internal.MobileDriverFactory
import com.kms.katalon.core.webui.driver.DriverFactory
import com.kms.katalon.core.testobject.RequestObject
import com.kms.katalon.core.testobject.ResponseObject
import com.kms.katalon.core.testobject.ConditionType
import com.kms.katalon.core.testobject.TestObjectProperty
import com.kms.katalon.core.mobile.helper.MobileElementCommonHelper
import com.kms.katalon.core.util.KeywordUtil
import com.kms.katalon.core.webui.exception.WebElementNotFoundException
public class randomEmail {
/**
* Check if element present in timeout
* @param to Katalon test object
* @param timeout time to wait for element to show up
* @return true if element present, otherwise false
*/
@Keyword
public String getEmail(String suffix,String prefix){
int randomNo = (int)(Math.random() * 1000);
return suffix + randomNo + "@" + prefix;
}
}
fap
October 28, 2019, 3:15pm
5
solved:
step definition
Mobile.callTestCase(findTestCase('Test Cases/mobile random email'), [:], FailureHandling.OPTIONAL)
test case
String Mail = CustomKeywords.'custom.randomEmail.getEmail'('pravettoni', 'email.com')
Mobile.sendKeys(findTestObject('Object Repository/Carrier/28-invita utente/android.widget.EditText0 - Inserisci le-mail dell'),
Mail)
Mobile.tap(findTestObject('Carrier/28-invita utente/android.widget.Button0 - CONFERMA'), 0)
Mobile.tap(findTestObject('Carrier/28-invita utente/android.widget.TextView0 - OK'), 0)
Mobile.closeApplication()
1 Like
Glad you solved it! So does it seem like it was the package name and imports that were the problem?
– Chris
fap
October 29, 2019, 8:16am
7
I still can’t use it within the groovy step definition, but I set it as a test case and it works.
importing it as a test case I used, by mistake, findtestobject instead of findtestcase and I had to pass the parameters