The TC2 script calls the `WebUI.waitForElementNotClicakble` keyword, which clear…ly demonstrated my understanding why `StaleElementReferenceException` is thrown by a lot of Katalon Keywords.
As of March 2026 (1 year and 3 months later), I examined how the TC2 script runs on various versions of Katalon Studio. I confirmed that v10.2.4 demonstrated SERE, but surprisingly enough v10.3.0 behaved differently.
## using v10.2.4, TC2 script ran ...
```
2026-03-06 20:56:09.540 INFO c.k.katalon.core.main.TestCaseExecutor - START Test Cases/TC2
2026-03-06 20:56:10.751 DEBUG testcase.TC2 - 1: projectDir = Paths.get(getProjectDir())
2026-03-06 20:56:10.806 DEBUG testcase.TC2 - 2: html = projectDir.resolve("docs/targetPage.html")
2026-03-06 20:56:10.862 DEBUG testcase.TC2 - 3: htmlURL = toURI().toURL()
2026-03-06 20:56:10.948 DEBUG testcase.TC2 - 4: urlString = htmlURL.toExternalForm()
2026-03-06 20:56:10.977 DEBUG testcase.TC2 - 5: comment("navigating to " + urlString)
2026-03-06 20:56:11.113 INFO c.k.k.c.keyword.builtin.CommentKeyword - navigating to file:/Users/kazuakiurayama/katalon-workspace/StaleElementReferenceExceptionReproduction/docs/targetPage.html
2026-03-06 20:56:11.121 DEBUG testcase.TC2 - 6: openBrowser("")
2026-03-06 20:56:11.358 INFO c.k.k.core.webui.driver.DriverFactory - Starting 'Chrome' driver
2026-03-06 20:56:11.367 INFO c.k.k.c.w.util.WebDriverPropertyUtil - User set preference: ['excludeSwitches', '[enable-automation]']
2026-03-06 20:56:11.428 INFO c.k.k.core.webui.driver.DriverFactory - Action delay is set to 0 milliseconds
3月 06, 2026 8:56:23 午後 org.openqa.selenium.devtools.CdpVersionFinder findNearestMatch
警告: Unable to find CDP implementation matching 145
3月 06, 2026 8:56:23 午後 org.openqa.selenium.chromium.ChromiumDriver lambda$new$4
警告: Unable to find version of CDP to use for 145.0.7632.160. You may need to include a dependency on a specific version of the CDP using something similar to `org.seleniumhq.selenium:selenium-devtools-v86:4.28.1` where the version ("v86") matches the version of the chromium-based browser you're using and the version number of the artifact is the same as Selenium's.
2026-03-06 20:56:23.740 INFO c.k.k.core.webui.driver.DriverFactory - sessionId = 87f8b2428ae1043be06d77232f260573
2026-03-06 20:56:23.745 INFO c.k.k.core.webui.driver.DriverFactory - browser = Chrome 145.0.7632.160
2026-03-06 20:56:23.746 INFO c.k.k.core.webui.driver.DriverFactory - platform = Mac OS X
2026-03-06 20:56:23.747 INFO c.k.k.core.webui.driver.DriverFactory - seleniumVersion = 4.28.1
2026-03-06 20:56:23.782 INFO c.k.k.core.webui.driver.DriverFactory - proxyInformation = ProxyInformation { proxyOption=NO_PROXY, proxyServerType=HTTP, username=, password=********, proxyServerAddress=, proxyServerPort=0, executionList="", isApplyToDesiredCapabilities=true }
2026-03-06 20:56:23.898 DEBUG testcase.TC2 - 7: navigateToUrl(urlString)
2026-03-06 20:56:24.484 DEBUG testcase.TC2 - 8: setViewPortSize(800, 600)
2026-03-06 20:56:24.729 DEBUG testcase.TC2 - 9: myButtonTestObject = findTestObject("Object Repository/myButton")
2026-03-06 20:56:24.975 DEBUG testcase.TC2 - 10: verifyElementPresent(myButtonTestObject, 10, STOP_ON_FAILURE)
2026-03-06 20:56:25.205 DEBUG testcase.TC2 - 11: try
2026-03-06 20:56:25.207 DEBUG testcase.TC2 - 1: waitForElementNotClickable(myButtonTestObject, 10, STOP_ON_FAILURE)
2026-03-06 20:56:27.770 ERROR c.k.k.core.keyword.internal.KeywordMain - ❌ Unable to wait for object 'Object Repository/myButton' to be not clickable (Root cause: com.kms.katalon.core.exception.StepFailedException: Unable to wait for object 'Object Repository/myButton' to be not clickable
at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.stepFailed(WebUIKeywordMain.groovy:118)
at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.runKeyword(WebUIKeywordMain.groovy:43)
at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain$runKeyword.call(Unknown Source)
at com.kms.katalon.core.webui.keyword.builtin.WaitForElementNotClickableKeyword.waitForElementNotClickable(WaitForElementNotClickableKeyword.groovy:108)
at com.kms.katalon.core.webui.keyword.builtin.WaitForElementNotClickableKeyword.execute(WaitForElementNotClickableKeyword.groovy:69)
at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:64)
at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords.waitForElementNotClickable(WebUiBuiltInKeywords.groovy:597)
at TC2.run(TC2:42)
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:485)
at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:476)
at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:455)
at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:447)
at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:321)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:151)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:139)
at TempTestCase1772798163137.run(TempTestCase1772798163137.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: org.openqa.selenium.StaleElementReferenceException: stale element reference: stale element not found in the current frame
(Session info: chrome=145.0.7632.160)
For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#stale-element-reference-exception
Build info: version: '4.28.1', revision: '73f5ad48a2'
System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '26.3', java.version: '17.0.14'
Driver info: com.kms.katalon.selenium.driver.CChromeDriver
Command: [87f8b2428ae1043be06d77232f260573, isElementEnabled {id=f.4334AB0BAAFC5B11ABEC5C6D3192C024.d.1236A857D4806F9746EF5116553A8710.e.3}]
Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 145.0.7632.160, chrome: {chromedriverVersion: 145.0.7632.117 (de4e5d6e13b..., userDataDir: /var/folders/l9/hl8jlph969j...}, fedcm:accounts: true, goog:chromeOptions: {debuggerAddress: localhost:64187}, goog:processID: 28375, networkConnectionEnabled: false, pageLoadStrategy: normal, platformName: mac, proxy: Proxy(), se:cdp: ws://localhost:64187/devtoo..., se:cdpVersion: 145.0.7632.160, setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: ignore, webSocketUrl: ws://localhost:22126/sessio..., webauthn:extension:credBlob: true, webauthn:extension:largeBlob: true, webauthn:extension:minPinLength: true, webauthn:extension:prf: true, webauthn:virtualAuthenticators: true}
Element: [[CChromeDriver: chrome on mac (87f8b2428ae1043be06d77232f260573)] -> xpath: //button[@id='myButton']]
Session ID: 87f8b2428ae1043be06d77232f260573
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at org.openqa.selenium.remote.ErrorCodec.decode(ErrorCodec.java:167)
at org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:138)
at org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:50)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:215)
at org.openqa.selenium.remote.service.DriverCommandExecutor.invokeExecute(DriverCommandExecutor.java:216)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:174)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:545)
at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:223)
at org.openqa.selenium.remote.RemoteWebElement.isEnabled(RemoteWebElement.java:181)
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)
at org.openqa.selenium.support.decorators.WebDriverDecorator.call(WebDriverDecorator.java:315)
at org.openqa.selenium.support.decorators.DefaultDecorated.call(DefaultDecorated.java:48)
at org.openqa.selenium.support.decorators.WebDriverDecorator.lambda$createProxyFactory$3(WebDriverDecorator.java:405)
at net.bytebuddy.renamed.java.lang.Object$ByteBuddy$KXkT0vrm.isEnabled(Unknown Source)
at org.openqa.selenium.WebElement$isEnabled.call(Unknown Source)
at com.kms.katalon.core.webui.keyword.builtin.WaitForElementNotClickableKeyword$1.apply(WaitForElementNotClickableKeyword.groovy:85)
at com.kms.katalon.core.webui.keyword.builtin.WaitForElementNotClickableKeyword$1.apply(WaitForElementNotClickableKeyword.groovy)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:203)
at org.openqa.selenium.support.ui.Wait$until.call(Unknown Source)
at com.kms.katalon.core.webui.keyword.builtin.WaitForElementNotClickableKeyword$_waitForElementNotClickable_closure1.doCall(WaitForElementNotClickableKeyword.groovy:82)
at com.kms.katalon.core.webui.keyword.builtin.WaitForElementNotClickableKeyword$_waitForElementNotClickable_closure1.doCall(WaitForElementNotClickableKeyword.groovy)
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)
at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.runKeyword(WebUIKeywordMain.groovy:35)
at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain$runKeyword.call(Unknown Source)
at com.kms.katalon.core.webui.keyword.builtin.WaitForElementNotClickableKeyword.waitForElementNotClickable(WaitForElementNotClickableKeyword.groovy:108)
at com.kms.katalon.core.webui.keyword.builtin.WaitForElementNotClickableKeyword.execute(WaitForElementNotClickableKeyword.groovy:69)
at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:64)
at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords.waitForElementNotClickable(WebUiBuiltInKeywords.groovy:597)
at Script1733285851173.run(Script1733285851173.groovy:42)
... 13 more
)
2026-03-06 20:56:27.793 DEBUG testcase.TC2 - 12: catch (Exception e)
2026-03-06 20:56:27.797 DEBUG testcase.TC2 - 1: println(">>> An Exception was caught: " + getClass().getName() + ": " + e.getMessage() + " <<<")
>>> An Exception was caught: com.kms.katalon.core.exception.StepFailedException: Unable to wait for object 'Object Repository/myButton' to be not clickable <<<
2026-03-06 20:56:27.838 DEBUG testcase.TC2 - 2: println("===========================================================================")
===========================================================================
2026-03-06 20:56:27.849 DEBUG testcase.TC2 - 3: e.printStackTrace()
com.kms.katalon.core.exception.StepFailedException: Unable to wait for object 'Object Repository/myButton' to be not clickable
at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.stepFailed(WebUIKeywordMain.groovy:118)
at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.runKeyword(WebUIKeywordMain.groovy:43)
at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain$runKeyword.call(Unknown Source)
at com.kms.katalon.core.webui.keyword.builtin.WaitForElementNotClickableKeyword.waitForElementNotClickable(WaitForElementNotClickableKeyword.groovy:108)
at com.kms.katalon.core.webui.keyword.builtin.WaitForElementNotClickableKeyword.execute(WaitForElementNotClickableKeyword.groovy:69)
at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:64)
at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords.waitForElementNotClickable(WebUiBuiltInKeywords.groovy:597)
at TC2.run(TC2:42)
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:485)
at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:476)
at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:455)
at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:447)
at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:321)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:151)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:139)
at TempTestCase1772798163137.run(TempTestCase1772798163137.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: org.openqa.selenium.StaleElementReferenceException: stale element reference: stale element not found in the current frame
(Session info: chrome=145.0.7632.160)
For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#stale-element-reference-exception
Build info: version: '4.28.1', revision: '73f5ad48a2'
System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '26.3', java.version: '17.0.14'
Driver info: com.kms.katalon.selenium.driver.CChromeDriver
Command: [87f8b2428ae1043be06d77232f260573, isElementEnabled {id=f.4334AB0BAAFC5B11ABEC5C6D3192C024.d.1236A857D4806F9746EF5116553A8710.e.3}]
Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 145.0.7632.160, chrome: {chromedriverVersion: 145.0.7632.117 (de4e5d6e13b..., userDataDir: /var/folders/l9/hl8jlph969j...}, fedcm:accounts: true, goog:chromeOptions: {debuggerAddress: localhost:64187}, goog:processID: 28375, networkConnectionEnabled: false, pageLoadStrategy: normal, platformName: mac, proxy: Proxy(), se:cdp: ws://localhost:64187/devtoo..., se:cdpVersion: 145.0.7632.160, setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: ignore, webSocketUrl: ws://localhost:22126/sessio..., webauthn:extension:credBlob: true, webauthn:extension:largeBlob: true, webauthn:extension:minPinLength: true, webauthn:extension:prf: true, webauthn:virtualAuthenticators: true}
Element: [[CChromeDriver: chrome on mac (87f8b2428ae1043be06d77232f260573)] -> xpath: //button[@id='myButton']]
Session ID: 87f8b2428ae1043be06d77232f260573
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at org.openqa.selenium.remote.ErrorCodec.decode(ErrorCodec.java:167)
at org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:138)
at org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:50)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:215)
at org.openqa.selenium.remote.service.DriverCommandExecutor.invokeExecute(DriverCommandExecutor.java:216)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:174)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:545)
at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:223)
at org.openqa.selenium.remote.RemoteWebElement.isEnabled(RemoteWebElement.java:181)
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)
at org.openqa.selenium.support.decorators.WebDriverDecorator.call(WebDriverDecorator.java:315)
at org.openqa.selenium.support.decorators.DefaultDecorated.call(DefaultDecorated.java:48)
at org.openqa.selenium.support.decorators.WebDriverDecorator.lambda$createProxyFactory$3(WebDriverDecorator.java:405)
at net.bytebuddy.renamed.java.lang.Object$ByteBuddy$KXkT0vrm.isEnabled(Unknown Source)
at org.openqa.selenium.WebElement$isEnabled.call(Unknown Source)
at com.kms.katalon.core.webui.keyword.builtin.WaitForElementNotClickableKeyword$1.apply(WaitForElementNotClickableKeyword.groovy:85)
at com.kms.katalon.core.webui.keyword.builtin.WaitForElementNotClickableKeyword$1.apply(WaitForElementNotClickableKeyword.groovy)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:203)
at org.openqa.selenium.support.ui.Wait$until.call(Unknown Source)
at com.kms.katalon.core.webui.keyword.builtin.WaitForElementNotClickableKeyword$_waitForElementNotClickable_closure1.doCall(WaitForElementNotClickableKeyword.groovy:82)
at com.kms.katalon.core.webui.keyword.builtin.WaitForElementNotClickableKeyword$_waitForElementNotClickable_closure1.doCall(WaitForElementNotClickableKeyword.groovy)
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)
at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.runKeyword(WebUIKeywordMain.groovy:35)
... 19 more
2026-03-06 20:56:27.855 DEBUG testcase.TC2 - 4: println("===========================================================================")
===========================================================================
2026-03-06 20:56:27.860 DEBUG testcase.TC2 - 14: closeBrowser()
2026-03-06 20:56:28.025 INFO c.k.katalon.core.main.TestCaseExecutor - END Test Cases/TC2
```
## v10.3.0, the TC2 ran ...
```
2026-03-06 21:18:55.625 INFO c.k.katalon.core.main.TestCaseExecutor - START Test Cases/TC2
2026-03-06 21:18:56.865 DEBUG testcase.TC2 - 1: projectDir = Paths.get(getProjectDir())
2026-03-06 21:18:56.885 DEBUG testcase.TC2 - 2: html = projectDir.resolve("docs/targetPage.html")
2026-03-06 21:18:56.914 DEBUG testcase.TC2 - 3: htmlURL = toURI().toURL()
2026-03-06 21:18:56.950 DEBUG testcase.TC2 - 4: urlString = htmlURL.toExternalForm()
2026-03-06 21:18:56.962 DEBUG testcase.TC2 - 5: comment("navigating to " + urlString)
2026-03-06 21:18:57.096 INFO c.k.k.c.keyword.builtin.CommentKeyword - navigating to file:/Users/kazuakiurayama/katalon-workspace/StaleElementReferenceExceptionReproduction/docs/targetPage.html
2026-03-06 21:18:57.106 DEBUG testcase.TC2 - 6: openBrowser("")
2026-03-06 21:18:57.502 INFO c.k.k.core.webui.driver.DriverFactory - Starting 'Chrome' driver
2026-03-06 21:18:57.523 INFO c.k.k.c.w.util.WebDriverPropertyUtil - User set preference: ['excludeSwitches', '[enable-automation]']
2026-03-06 21:18:57.607 INFO c.k.k.core.webui.driver.DriverFactory - Action delay is set to 0 milliseconds
3月 06, 2026 9:19:11 午後 org.openqa.selenium.devtools.CdpVersionFinder findNearestMatch
警告: Unable to find CDP implementation matching 145
3月 06, 2026 9:19:11 午後 org.openqa.selenium.chromium.ChromiumDriver lambda$new$4
警告: Unable to find version of CDP to use for 145.0.7632.160. You may need to include a dependency on a specific version of the CDP using something similar to `org.seleniumhq.selenium:selenium-devtools-v86:4.28.1` where the version ("v86") matches the version of the chromium-based browser you're using and the version number of the artifact is the same as Selenium's.
2026-03-06 21:19:11.692 INFO c.k.k.core.webui.driver.DriverFactory - sessionId = a0032761278d8335a9d584ef1f7590a1
2026-03-06 21:19:11.698 INFO c.k.k.core.webui.driver.DriverFactory - browser = Chrome 145.0.7632.160
2026-03-06 21:19:11.699 INFO c.k.k.core.webui.driver.DriverFactory - platform = Mac OS X
2026-03-06 21:19:11.701 INFO c.k.k.core.webui.driver.DriverFactory - seleniumVersion = 4.28.1
2026-03-06 21:19:11.732 INFO c.k.k.core.webui.driver.DriverFactory - proxyInformation = ProxyInformation { proxyOption=NO_PROXY, proxyServerType=HTTP, username=, password=********, proxyServerAddress=, proxyServerPort=0, executionList="", isApplyToDesiredCapabilities=true }
2026-03-06 21:19:11.880 DEBUG testcase.TC2 - 7: navigateToUrl(urlString)
2026-03-06 21:19:12.479 DEBUG testcase.TC2 - 8: setViewPortSize(800, 600)
2026-03-06 21:19:12.729 DEBUG testcase.TC2 - 9: myButtonTestObject = findTestObject("Object Repository/myButton")
2026-03-06 21:19:12.954 DEBUG testcase.TC2 - 10: verifyElementPresent(myButtonTestObject, 10, STOP_ON_FAILURE)
2026-03-06 21:19:13.264 DEBUG testcase.TC2 - 11: try
2026-03-06 21:19:13.266 DEBUG testcase.TC2 - 1: waitForElementNotClickable(myButtonTestObject, 10, STOP_ON_FAILURE)
2026-03-06 21:19:26.486 WARN .w.k.b.WaitForElementNotClickableKeyword - Object 'Object Repository/myButton' is not clickable after 10 second(s)
2026-03-06 21:19:26.496 DEBUG testcase.TC2 - 14: closeBrowser()
2026-03-06 21:19:40.031 INFO c.k.katalon.core.main.TestCaseExecutor - END Test Cases/TC2
```
## What's the behavioral difference of v10.2.4 and v10.3.0?
Using v10.2.4 I could see a StaleElementReferenceException was raised by TC2, by `WebUI.waitForElementNotClickable` keyword.
On the other hand, using v10.3.0 I did not see any StaleElementReferenceException. The `WebUI.waitForElementNotClickable` keyword emitted a quiet message:
`2026-03-06 21:19:26.486 WARN .w.k.b.WaitForElementNotClickableKeyword - Object 'Object Repository/myButton' is not clickable after 10 second(s)`
## Problem to solve
Why the two versions behave differently?
Using v10.3.0, `WebUI.waitForElementNotClickable` keyword did not throw StaleElementReferenceException. Can I trace the code change that caused this behavioral change?