Random email error: no such property

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;
}

@Chris_Trevarthen
@Rahul

Hi @fap

Can you confirm where you have the RandomEmail.groovy file saved? It should be in the Keywords folder, looking something like this:

52%20AM

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

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;
		}
}

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

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