Katalon Studio для вызова настраиваемого ключевого слова из другого настраиваемого ключевого слова

У меня есть 2 CustomKeywords, находящихся в одном пакете в проекте Katalon Studio. Я пытаюсь вызвать одно пользовательское ключевое слово из другого. Этот код не работает в этом случае:

CustomKeywords.'mypack.myclass.mymethod'()

Ключевое слово, по которому следует называть:

package uploadFile

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.cucumber.keyword.CucumberBuiltinKeywords as CucumberKW
import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords as Mobile
import com.kms.katalon.core.model.FailureHandling
import com.kms.katalon.core.testcase.TestCase
import com.kms.katalon.core.testdata.TestData
import com.kms.katalon.core.testobject.TestObject
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
import java.awt.Robot
import java.awt.Toolkit
import java.awt.datatransfer.StringSelection
import java.awt.event.KeyEvent

import com.kms.katalon.core.annotation.Keyword
import com.kms.katalon.core.testobject.TestObject
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
import internal.GlobalVariable

class upload2Files {
    @Keyword
    def upload(TestObject to, String filePath , String file , String file2) {
        WebUI.click(to)
        StringSelection ss = new StringSelection("\""+filePath+"\" " +"\""+ file +"\" "+ file2 );
        Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);
        Robot robot = new Robot();
        robot.keyPress(KeyEvent.VK_ENTER);
        robot.keyRelease(KeyEvent.VK_ENTER);
        robot.keyPress(KeyEvent.VK_CONTROL);
        robot.keyPress(KeyEvent.VK_V);
        robot.keyRelease(KeyEvent.VK_V);
        robot.keyRelease(KeyEvent.VK_CONTROL)
        robot.keyPress(KeyEvent.VK_ENTER);
        robot.keyRelease(KeyEvent.VK_ENTER);
    }
} 

Другое ключевое слово, где я пытаюсь его назвать:

(new uploadFile.upload2Files()).upload(findTestObject('Object Repository/validateFile/input_originalFile'), (d_directory.toString() + '\\') + detachedTXT1, (d_directory.toString() + '\\') + detachedTXT2)

Сообщение об ошибке:

org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No signature of method: uploadFile.upload2Files.upload() is applicable for argument types: (com.kms.katalon.core.testobject.TestObject, java.lang.String, java.lang.String) values

person plaidshirt    schedule 17.06.2019    source источник
comment
ваш вызов функции должен передавать три строки. вы проходите только два   -  person dynamo    schedule 17.06.2019
comment
@dynamo: я исправил вызов метода, но все равно получил ту же ошибку.   -  person plaidshirt    schedule 18.06.2019


Ответы (2)


Я объясню на примере "(new packagename.classname ()). Methodname ()"

У меня ключевое слово1:

package closeAplication

import...

public class closeApp {
    @Keyword
    public void cmdAdbCloseApp(String ApplicationID){
        String CMDclose = ('adb shell am force-stop ' + ApplicationID)
        println ('This CMD Windows command will be executed: ' + CMDclose)
        Runtime.getRuntime().exec(CMDclose)
    }
}

Я буду использовать keyword1 в тестовом примере:

def ApplicationID = (GlobalVariable.ApplicationIDds)
CustomKeywords.'closeAplication.closeApp.cmdAdbCloseApp'(ApplicationID)

Я хочу написать другое ключевое слово2 и вызвать внутри keyword1:

package runAppInMobile

import ...

public class runAppClass {
    @Keyword
    public void runApp (String ApplicationID){
        new closeAplication.runAppClass().cmdAdbCloseApp(ApplicationID) //here's the call of the above keyword1
        Mobile.startExistingApplication(ApplicationID)
    }
}
person PeTest    schedule 16.10.2019

(новое имя пакета.classname ()). methodname ()

person user1713716    schedule 19.07.2019