首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从简单的java应用程序运行Katalon脚本?

如何从简单的java应用程序运行Katalon脚本?
EN

Stack Overflow用户
提问于 2021-01-21 23:54:39
回答 1查看 317关注 0票数 1

目标

使用java执行Katalon生成的脚本。如果这样做有效,脚本可以在我的devops管道上运行:浏览器堆栈或我自己的selenium服务器。

问题

我有一个groovy脚本,与Katalon生成的脚本相同:

代码语言:javascript
复制
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
WebUI.openBrowser("https://www.katalon.com")

我试图使用java项目运行这个脚本。我找到了所有所需的罐子。但是,当我运行时,我得到了以下错误:java.lang.VerifyError:在操作数堆栈上输入错误

代码语言:javascript
复制
Exception in thread "main" com.kms.katalon.core.exception.StepFailedException: Unable to open browser with url: 'https://www.katalon.com'
    at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.stepFailed(WebUIKeywordMain.groovy:64)
    at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.runKeyword(WebUIKeywordMain.groovy:26)
    at com.kms.katalon.core.webui.keyword.builtin.OpenBrowserKeyword.openBrowser(OpenBrowserKeyword.groovy:81)
    at com.kms.katalon.core.webui.keyword.builtin.OpenBrowserKeyword.execute(OpenBrowserKeyword.groovy:67)
    at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:73)
    at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords.openBrowser(WebUiBuiltInKeywords.groovy:63)
    at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords$openBrowser.call(Unknown Source)
    at Script1.run(Script1.groovy:17)
    at JenkinsGroovySandbox1.main(JenkinsGroovySandbox1.java:37)
Caused by: java.lang.VerifyError: Bad type on operand stack
Exception Details:
  Location:
    com/kms/katalon/core/webui/driver/DriverFactory.createNewRemoteWebDriver(Ljava/util/Map;Lorg/openqa/selenium/remote/DesiredCapabilities;)Lorg/openqa/selenium/WebDriver; @168: invokespecial
  Reason:
    Type 'io/appium/java_client/remote/AppiumCommandExecutor' (current frame, stack[2]) is not assignable to 'org/openqa/selenium/remote/HttpCommandExecutor'
  Current Frame:
    bci: @168
    flags: { }
    locals: { 'java/util/Map', 'org/openqa/selenium/remote/DesiredCapabilities', 'java/lang/String', 'java/lang/String', 'com/kms/katalon/core/network/ProxyInformation', 'java/lang/Object', 'io/appium/java_client/remote/AppiumCommandExecutor' }
    stack: { uninitialized 161, uninitialized 161, 'io/appium/java_client/remote/AppiumCommandExecutor', 'org/openqa/selenium/remote/DesiredCapabilities' }
  Bytecode:
    0x0000000: b800 f04d b802 a54e 2dc7 0006 1236 4eb8
    0x0000010: 020a 3a04 1904 b602 0e99 0014 2bb8 02a8
    ...
    0x00000e0: bf                                     
  Stackmap Table:
    append_frame(@15,Object[#154],Object[#154])
    append_frame(@45,Object[#527])
    same_frame(@98)
    append_frame(@119,Object[#3])
    same_frame(@142)
    same_frame(@172)
    same_frame(@202)

    at com.kms.katalon.core.webui.keyword.builtin.OpenBrowserKeyword$_openBrowser_closure1.doCall(OpenBrowserKeyword.groovy:74)
    at com.kms.katalon.core.webui.keyword.builtin.OpenBrowserKeyword$_openBrowser_closure1.call(OpenBrowserKeyword.groovy)
    at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.runKeyword(WebUIKeywordMain.groovy:20)
    ... 7 more

理论

RemoteWebDriver

正如我们在日志中看到的,默认情况下,katalon库使用带有Appium的远程web驱动程序。我找不到如何使用katalon库在这个脚本中设置webdriver。使用纯硒非常容易:D

我正在研究使用本地驱动程序代替远程驱动程序的可能性,或者如何在我的简单groovy脚本中配置参数以使用我的远程驱动程序。

Katalon社区与企业

也许katalon脚本应该使用Katalon工具来执行,而不是从外部katalon工具中执行。

尝试

EN

回答 1

Stack Overflow用户

发布于 2021-12-29 13:36:58

最后,我实现了使用java和maven运行任何katakon脚本。所有这些都在linux上。我就是这样做的:

1.-将几个katakon 加载到我的pom中。它们不是公开的(2021年初),所以唯一的原因是从katalon工作室安装中提取它们。

代码语言:javascript
复制
<dependency>
  <groupId>katalon</groupId>
  <artifactId>com.kms.katalon.core_1.0.0.202101180916.jar</artifactId>
  <version>1.0.0</version>
  <type>jar</type>
  <scope>system</scope>
  <systemPath>${katalon.studio.home.path}/plugins/com.kms.katalon.core_1.0.0.202101180916.jar</systemPath>
</dependency>

2.-由于新的错误修改一个katalon类。唯一的解决方案是从katalon源代码中删除一个类的一个方法,该源代码是公开的:

原件:https://github.com/katalon-studio/katalon-studio-testing-framework

改性:https://github.com/jrichardsz-software-architect-tools/katalon-runner/blob/beta/src/main/java/com/kms/katalon/core/testobject/ObjectRepository.java#L263

这是我打电话给katalon的项目。

https://github.com/jrichardsz-software-architect-tools/katalon-runner

执行流程是:

使用katalon克隆和构建katalon runner

  • record ui流以获得groovy scripts

  • using的shell,执行katalon运行器传递它的多个参数

正如您所看到的,它具有插件特性,因此在Jenkins或任何ci服务器上都很容易使用。

警察:我有一些当地的变化。我将更新存储库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65837472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档