Search code examples
javagroovykatalon-studiokatalon

I need to tap on the mobile keyboard from a generated number


on Katalon I made this custom method :

def void enterPhoneNumber(a){
    a = Integer.valueOf(a)
    def ref = ""
    int max = a.length()
    for(int i=0; i< max; i++){
        ref = a.substring(i, i + 1)
        switch (ref) {
            case "0":
                Mobile.tap('Object Repository/Onboarding/001-Startup page/001-Phone number fields/002-Numeric Keyboard/Button - 0' , GlobalVariable.avgWait);
                break;
            case "1":
                Mobile.tap('Object Repository/Onboarding/001-Startup page/001-Phone number fields/002-Numeric Keyboard/Button - 1' , GlobalVariable.avgWait);
                break;
            case "2":
                Mobile.tap('Object Repository/Onboarding/001-Startup page/001-Phone number fields/002-Numeric Keyboard/Button - 2' , GlobalVariable.avgWait);
                break;
            case "3":
                Mobile.tap('Object Repository/Onboarding/001-Startup page/001-Phone number fields/002-Numeric Keyboard/Button - 4' , GlobalVariable.avgWait);
                break;
            case "4":
                Mobile.tap('Object Repository/Onboarding/001-Startup page/001-Phone number fields/002-Numeric Keyboard/Button - 3' , GlobalVariable.avgWait);
                break;
            case "5":
                Mobile.tap('Object Repository/Onboarding/001-Startup page/001-Phone number fields/002-Numeric Keyboard/Button - 5' , GlobalVariable.avgWait);
                break;
            case "6":
                Mobile.tap('Object Repository/Onboarding/001-Startup page/001-Phone number fields/002-Numeric Keyboard/Button - 6' , GlobalVariable.avgWait);
                break;
            case "7":
                Mobile.tap('Object Repository/Onboarding/001-Startup page/001-Phone number fields/002-Numeric Keyboard/Button - 7' , GlobalVariable.avgWait);
                break;
            case "8":
                Mobile.tap('Object Repository/Onboarding/001-Startup page/001-Phone number fields/002-Numeric Keyboard/Button - 8' , GlobalVariable.avgWait);
                break;
            case "9":
                Mobile.tap('Object Repository/Onboarding/001-Startup page/001-Phone number fields/002-Numeric Keyboard/Button - 9' , GlobalVariable.avgWait);
                break;
            default:
                break;
        }
    }}

but am getting this error : Caused by: org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No signature of method: java.lang.Integer.length() is applicable for argument types: () values: []

Reason: com.kms.katalon.core.exception.StepErrorException: org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No signature of method: java.lang.Integer.length() is applicable for argument types: () values: [] Possible solutions: next(), each(groovy.lang.Closure), getAt(java.lang.String), with(groovy.lang.Closure), signum(int), wait()

please advise !


Solution

  • solved by :

    @Keyword
    //tap on related button on numeric keyboard based on phone number passed
    def void enterPhoneNumber(a){
        def ref = ""
        String max = a.length()-1
        int maxInt = Integer.valueOf(max)
        for(int i=0; i<= maxInt; i++){
            ref = a.substring(i, i+1 )
            switch (ref) {
                case "0":
                    Mobile.tap(findTestObject('Object Repository/Onboarding/001-Startup page/001-Phone number fields/002-Numeric Keyboard/Button - 0') , 5);
                    break;
                case "1":
                    Mobile.tap(findTestObject('Object Repository/Onboarding/001-Startup page/001-Phone number fields/002-Numeric Keyboard/Button - 1') , 5);
                    break;
                case "2":
                    Mobile.tap(findTestObject('Object Repository/Onboarding/001-Startup page/001-Phone number fields/002-Numeric Keyboard/Button - 2') , 5);
                    break;
                case "3":
                    Mobile.tap(findTestObject('Object Repository/Onboarding/001-Startup page/001-Phone number fields/002-Numeric Keyboard/Button - 3') , 5);
                    break;
                case "4":
                    Mobile.tap(findTestObject('Object Repository/Onboarding/001-Startup page/001-Phone number fields/002-Numeric Keyboard/Button - 4') , 5);
                    break;
                case "5":
                    Mobile.tap(findTestObject('Object Repository/Onboarding/001-Startup page/001-Phone number fields/002-Numeric Keyboard/Button - 5') , 5);
                    break;
                case "6":
                    Mobile.tap(findTestObject('Object Repository/Onboarding/001-Startup page/001-Phone number fields/002-Numeric Keyboard/Button - 6') , 5);
                    break;
                case "7":
                    Mobile.tap(findTestObject('Object Repository/Onboarding/001-Startup page/001-Phone number fields/002-Numeric Keyboard/Button - 7') , 5);
                    break;
                case "8":
                    Mobile.tap(findTestObject('Object Repository/Onboarding/001-Startup page/001-Phone number fields/002-Numeric Keyboard/Button - 8') , 5);
                    break;
                case "9":
                    Mobile.tap(findTestObject('Object Repository/Onboarding/001-Startup page/001-Phone number fields/002-Numeric Keyboard/Button - 9') , 5);
                    break;
                default:
                    break;
            }
        }
    }