MacBook Air M1, 8GB. macOS 12.7.1, Chrome 119.0.6045.159,
Katalon Studio Arm64 v9.0.0
See the attached zip for the project:
ks_verifyImagePresent.zip (186.5 KB)
I wanted to see if WebUI.verifyImagePresent keyword works for me.
I made a local HTML file that looks like this:
I made a TestObject for Image like this:
I made a Test Case TC1
import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
File page1 = new File("page1.html")
WebUI.openBrowser(page1.toURI().toURL().toString())
WebUI.verifyImagePresent(findTestObject("apple"))
WebUI.closeBrowser()
When I ran the Test Case, it failed with the following messages:
2023-11-28 20:10:59.048 INFO c.k.katalon.core.main.TestCaseExecutor - --------------------
2023-11-28 20:10:59.049 INFO c.k.katalon.core.main.TestCaseExecutor - START Test Cases/TC1
2023-11-28 20:10:59.203 DEBUG testcase.TC1 - 1: page1 = new java.io.File(page1.html)
2023-11-28 20:10:59.208 DEBUG testcase.TC1 - 2: openBrowser(toURL().toString())
2023-11-28 20:10:59.308 INFO c.k.k.core.webui.driver.DriverFactory - Starting 'Chrome' driver
Nov 28, 2023 8:10:59 PM org.openqa.selenium.remote.DesiredCapabilities chrome
INFO: Using `new ChromeOptions()` is preferred to `DesiredCapabilities.chrome()`
2023-11-28 20:10:59.322 INFO c.k.k.core.webui.driver.DriverFactory - Action delay is set to 0 milliseconds
Starting ChromeDriver 119.0.6045.105 (38c72552c5e15ba9b3117c0967a0fd105072d7c6-refs/branch-heads/6045@{#1103}) on port 47164
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
Nov 28, 2023 8:11:00 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
2023-11-28 20:11:00.540 INFO c.k.k.core.webui.driver.DriverFactory - sessionId = e7179985858cf0106c8f8d0875b6eea5
2023-11-28 20:11:00.554 INFO c.k.k.core.webui.driver.DriverFactory - browser = Chrome 119.0.0.0
2023-11-28 20:11:00.556 INFO c.k.k.core.webui.driver.DriverFactory - platform = Mac OS X
2023-11-28 20:11:00.557 INFO c.k.k.core.webui.driver.DriverFactory - seleniumVersion = 3.141.59
2023-11-28 20:11:00.562 INFO c.k.k.core.webui.driver.DriverFactory - proxyInformation = ProxyInformation { proxyOption=NO_PROXY, proxyServerType=HTTP, username=, password=********, proxyServerAddress=, proxyServerPort=0, executionList="", isApplyToDesiredCapabilities=true }
2023-11-28 20:11:00.625 DEBUG testcase.TC1 - 3: verifyImagePresent(findTestObject("apple"))
2023-11-28 20:11:01.292 ERROR c.k.k.core.keyword.internal.KeywordMain - β Unable to verify image present (Root cause: com.kms.katalon.core.exception.StepFailedException: Unable to verify image present
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.VerifyImagePresentKeyword.verifyImagePresent(VerifyImagePresentKeyword.groovy:94)
at com.kms.katalon.core.webui.keyword.builtin.VerifyImagePresentKeyword.execute(VerifyImagePresentKeyword.groovy:67)
at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:74)
at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords.verifyImagePresent(WebUiBuiltInKeywords.groovy:2794)
at TC1.run(TC1:8)
at com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194)
at com.kms.katalon.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:119)
at com.kms.katalon.core.main.TestCaseExecutor.runScript(TestCaseExecutor.java:448)
at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:439)
at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:418)
at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:410)
at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:285)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:144)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:135)
at TempTestCase1701169857504.run(TempTestCase1701169857504.groovy:25)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Caused by: java.lang.UnsatisfiedLinkError: no jniopencv_core in java.library.path: /Users/kazuakiurayama/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
at com.googlecode.javacpp.Loader.loadLibrary(Loader.java:444)
at com.googlecode.javacpp.Loader.load(Loader.java:368)
at com.googlecode.javacpp.Loader.load(Loader.java:315)
at com.googlecode.javacv.cpp.opencv_core.<clinit>(opencv_core.java:131)
at com.googlecode.javacpp.Loader.load(Loader.java:334)
at com.googlecode.javacpp.Loader.load(Loader.java:315)
at com.googlecode.javacv.cpp.opencv_core$CvArr.<clinit>(opencv_core.java:158)
at org.sikuli.core.cv.ImagePreprocessor.createGrayscale(ImagePreprocessor.java:52)
at org.sikuli.core.search.algorithm.TemplateMatcher.findMatchesByGrayscaleAtOriginalResolution(TemplateMatcher.java:18)
at org.sikuli.api.ImageTarget.getUnordredMatches(ImageTarget.java:122)
at org.sikuli.api.DefaultTarget.doFindAll(DefaultTarget.java:93)
at org.sikuli.api.DefaultScreenRegion._find(DefaultScreenRegion.java:73)
at org.sikuli.api.DefaultScreenRegion.find(DefaultScreenRegion.java:64)
at com.kms.katalon.core.webui.common.ScreenUtil.findImage(ScreenUtil.java:121)
at com.kms.katalon.core.webui.common.ScreenUtil.isImageExist(ScreenUtil.java:48)
at com.kms.katalon.core.webui.keyword.builtin.VerifyImagePresentKeyword$_verifyImagePresent_closure1.doCall(VerifyImagePresentKeyword.groovy:88)
at com.kms.katalon.core.webui.keyword.builtin.VerifyImagePresentKeyword$_verifyImagePresent_closure1.call(VerifyImagePresentKeyword.groovy)
at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.runKeyword(WebUIKeywordMain.groovy:20)
at com.kms.katalon.core.webui.keyword.builtin.VerifyImagePresentKeyword.verifyImagePresent(VerifyImagePresentKeyword.groovy:94)
at com.kms.katalon.core.webui.keyword.builtin.VerifyImagePresentKeyword.execute(VerifyImagePresentKeyword.groovy:67)
at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:74)
at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords.verifyImagePresent(WebUiBuiltInKeywords.groovy:2794)
at Script1701132270828.run(Script1701132270828.groovy:8)
... 13 more
)
2023-11-28 20:11:01.294 ERROR c.k.katalon.core.main.TestCaseExecutor - β Test Cases/TC1 FAILED.
Reason:
com.kms.katalon.core.exception.StepFailedException: Unable to verify image present
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.VerifyImagePresentKeyword.verifyImagePresent(VerifyImagePresentKeyword.groovy:94)
at com.kms.katalon.core.webui.keyword.builtin.VerifyImagePresentKeyword.execute(VerifyImagePresentKeyword.groovy:67)
at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:74)
at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords.verifyImagePresent(WebUiBuiltInKeywords.groovy:2794)
at TC1.run(TC1:8)
at com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194)
at com.kms.katalon.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:119)
at com.kms.katalon.core.main.TestCaseExecutor.runScript(TestCaseExecutor.java:448)
at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:439)
at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:418)
at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:410)
at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:285)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:144)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:135)
at TempTestCase1701169857504.run(TempTestCase1701169857504.groovy:25)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Caused by: java.lang.UnsatisfiedLinkError: no jniopencv_core in java.library.path: /Users/kazuakiurayama/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
at com.googlecode.javacpp.Loader.loadLibrary(Loader.java:444)
at com.googlecode.javacpp.Loader.load(Loader.java:368)
at com.googlecode.javacpp.Loader.load(Loader.java:315)
at com.googlecode.javacv.cpp.opencv_core.<clinit>(opencv_core.java:131)
at com.googlecode.javacpp.Loader.load(Loader.java:334)
at com.googlecode.javacpp.Loader.load(Loader.java:315)
at com.googlecode.javacv.cpp.opencv_core$CvArr.<clinit>(opencv_core.java:158)
at org.sikuli.core.cv.ImagePreprocessor.createGrayscale(ImagePreprocessor.java:52)
at org.sikuli.core.search.algorithm.TemplateMatcher.findMatchesByGrayscaleAtOriginalResolution(TemplateMatcher.java:18)
at org.sikuli.api.ImageTarget.getUnordredMatches(ImageTarget.java:122)
at org.sikuli.api.DefaultTarget.doFindAll(DefaultTarget.java:93)
at org.sikuli.api.DefaultScreenRegion._find(DefaultScreenRegion.java:73)
at org.sikuli.api.DefaultScreenRegion.find(DefaultScreenRegion.java:64)
at com.kms.katalon.core.webui.common.ScreenUtil.findImage(ScreenUtil.java:121)
at com.kms.katalon.core.webui.common.ScreenUtil.isImageExist(ScreenUtil.java:48)
at com.kms.katalon.core.webui.keyword.builtin.VerifyImagePresentKeyword$_verifyImagePresent_closure1.doCall(VerifyImagePresentKeyword.groovy:88)
at com.kms.katalon.core.webui.keyword.builtin.VerifyImagePresentKeyword$_verifyImagePresent_closure1.call(VerifyImagePresentKeyword.groovy)
at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.runKeyword(WebUIKeywordMain.groovy:20)
... 18 more
2023-11-28 20:11:01.299 INFO c.k.katalon.core.main.TestCaseExecutor - END Test Cases/TC1
The following message tells me that there is a serious problem in Katalon Studio.
Caused by: java.lang.UnsatisfiedLinkError: no jniopencv_core in java.library.path:
I remember, several years ago, I had a bit of experience of using the WebUI.verifyImagePresent keyword. Possiblly it was Katalon Studio v7.x on Windows. I seem to remember, it ran without error about the jniopencv_core.
I suppose that Katalon Studio Arm64 v9 forgot to bundle the native jniopencv_core module.

