【发布时间】: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