目标
使用java执行Katalon生成的脚本。如果这样做有效,脚本可以在我的devops管道上运行:浏览器堆栈或我自己的selenium服务器。
问题
我有一个groovy脚本,与Katalon生成的脚本相同:
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
WebUI.openBrowser("https://www.katalon.com")我试图使用java项目运行这个脚本。我找到了所有所需的罐子。但是,当我运行时,我得到了以下错误:java.lang.VerifyError:在操作数堆栈上输入错误
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工具中执行。
尝试
发布于 2021-12-29 13:36:58
最后,我实现了使用java和maven运行任何katakon脚本。所有这些都在linux上。我就是这样做的:
1.-将几个katakon 加载到我的pom中。它们不是公开的(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
这是我打电话给katalon的项目。
https://github.com/jrichardsz-software-architect-tools/katalon-runner
执行流程是:
使用katalon克隆和构建katalon runner
。
正如您所看到的,它具有插件特性,因此在Jenkins或任何ci服务器上都很容易使用。
警察:我有一些当地的变化。我将更新存储库。
https://stackoverflow.com/questions/65837472
复制相似问题