【问题标题】:Katalon Studio to call custom keyword from other custom keywordKatalon Studio 从其他自定义关键字调用自定义关键字
【发布时间】:2019-10-31 02:54:29
【问题描述】:

我有 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

【问题讨论】:

  • 你的函数调用应该传递三个字符串。你只通过了两个
  • @dynamo :我修复了方法调用,但仍然出现同样的错误。

标签: groovy katalon-studio


【解决方案1】:

(新包名.classname()).methodname()

【讨论】:

    【解决方案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)
        }
    }
    

    我将在测试用例中使用关键字1:

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

    我想再写一个keyword2并在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)
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-31
      相关资源
      最近更新 更多