我需要从生成的号码中点击移动键盘

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

我在 Katalon 上制作了这个自定义方法:

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

但我收到此错误: Caused by: org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No signature of method: java.lang.Integer.length() is applicable for argument types: () 值:[]

原因: com.kms.katalon.core.exception.StepErrorException: org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: 没有方法签名: java.lang.Integer.length() 适用于参数类型: () 值: [] 可能的解决方案:next()、each(groovy.lang.Closure)、getAt(java.lang.String)、with(groovy.lang.Closure)、signum(int)、wait()

请指教!

您遇到此错误:

groovy.lang.MissingMethodException: No signature of method: java.lang.Integer.length() is applicable

正如它所说的那样 - 整数没有 .length() 方法。

我要猜猜你想做什么,这似乎是读入一个 phone 数字并调用每个数字的“Mobile.tap”方法。在这种情况下,我建议将数字视为字符串,以便您可以遍历每个字符:

void enterPhoneNumber(number) {
    String numberAsStr = number as String
    numberAsStr.each { digit ->
        Mobile.tap("Object Repository/Onboarding/001-Startup page/001-Phone number fields/002-Numeric Keyboard/Button - $digit" , GlobalVariable.avgWait);
    }
}

解决者:

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