【问题标题】:How to run Katalon script from simple java application?如何从简单的 Java 应用程序运行 Katalon 脚本?
【发布时间】:2021-04-26 11:11:55
【问题描述】:

目标

使用 java 执行由 Katalon Studio 生成的脚本。如果可行,脚本可以在我的 devops 管道上运行:browserstack 或我自己的 selenium 服务器。

问题

我有这个与 Katalon 工作室制作的脚本相同的 groovy 脚本:

import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
WebUI.openBrowser("https://www.katalon.com")

我尝试使用 java maven 项目运行此脚本。我找到了所有需要的罐子。但是当我运行时,我得到了这个错误:java.lang.VerifyError: Bad type on operand stack

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 工具执行。

尝试

【问题讨论】:

  • 找到解决方案了吗?

标签: java selenium selenium-webdriver appium katalon-studio


【解决方案1】:

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

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

<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-runner。

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

执行流程为:

  • 克隆并构建katalon runner
  • 用katalon记录ui流程,获取groovy脚本
  • 使用 shell,执行 katalon-runner 并传递几个参数

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

Pd:我有一些本地更改。我将更新存储库。

【讨论】:

    猜你喜欢
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    相关资源
    最近更新 更多