Trying to trigger an element in a drop down list but seems like there is something blocking katalon from clicking on it

Tried to trigger an element in a dropdown list but katalon always failed to although tried different ways and all of them using unique locator will attach a screenshot and the error that I have got

=============== ROOT CAUSE =====================

Caused by: org.openqa.selenium.ElementNotInteractableException: element not interactable

At object: ‘Object Repository/Customer Quick Entry/state selection’

For trouble shooting, please visit: Troubleshoot common exceptions | Katalon Docs

================================================

11-12-2025 02:30:47 PM click(findTestObject(“Customer Quick Entry/state selection”))

Elapsed time: 30.519s

Unable to click on object ‘Object Repository/Customer Quick Entry/state selection’ (Root cause: com.kms.katalon.core.exception.StepFailedException: Unable to click on object ‘Object Repository/Customer Quick Entry/state selection’

at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.stepFailed(WebUIKeywordMain.groovy:177)

at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.runKeyword(WebUIKeywordMain.groovy:49)

at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.runKeywordUntilTimeout(WebUIKeywordMain.groovy:133)

at com.kms.katalon.core.webui.keyword.builtin.ClickKeyword.click(ClickKeyword.groovy:65)

at com.kms.katalon.core.webui.keyword.builtin.ClickKeyword.execute(ClickKeyword.groovy:38)

at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:89)

at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords.click(WebUiBuiltInKeywords.groovy:721)

at create a quick customer.run(create a quick customer:38)

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:486)

at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:477)

at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:456)

at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:448)

at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:322)

at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:151)

at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:139)

at TempTestCase1762950519414.run(TempTestCase1762950519414.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.ElementNotInteractableException: element not interactable

(Session info: chrome=142.0.7444.60)

Build info: version: ‘4.34.0’, revision: ‘707dcb4246*’

System info: os.name: ‘Windows 11’, os.arch: ‘amd64’, os.version: ‘10.0’, java.version: ‘17.0.14’

Driver info: com.kms.katalon.selenium.driver.CChromeDriver

Command: [c1a5d9b4121b67c3cba1c6607f92d6f0, clickElement {id=f.73C7A426B0BAAD4091C85C97096EF43C.d.43E96D290BB9E61C2BAA096F65837F5B.e.200}]

Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 142.0.7444.60, chrome: {chromedriverVersion: 142.0.7444.59 (4b8153ab58d3…, userDataDir: C:\Users\fijaw\AppData\Loca…}, fedcm:accounts: true, goog:chromeOptions: {debuggerAddress: localhost:50975}, goog:processID: 30976, networkConnectionEnabled: false, pageLoadStrategy: normal, platformName: windows, proxy: Proxy(), se:cdp: ws://localhost:50975/devtoo…, se:cdpVersion: 142.0.7444.60, setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: {alert: ignore, beforeUnload: ignore, confirm: ignore, default: ignore, file: ignore, prompt: ignore}, webSocketUrl: ws://localhost:45185/sessio…, webauthn:extension:credBlob: true, webauthn:extension:largeBlob: true, webauthn:extension:minPinLength: true, webauthn:extension:prf: true, webauthn:virtualAuthenticators: true}

Element: [[CChromeDriver: chrome on windows (c1a5d9b4121b67c3cba1c6607f92d6f0)] → xpath: //ul[@id=‘ServiceState_listbox’]/li[2]]

Session ID: c1a5d9b4121b67c3cba1c6607f92d6f0

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:544)

at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:223)

at org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:76)

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$dnHRYMes.click(Unknown Source)

at com.kms.katalon.core.webui.keyword.builtin.ClickKeyword$\_click_closure1.doCall(ClickKeyword.groovy:58)

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 jdk.proxy2/jdk.proxy2.$Proxy49.execute(Unknown Source)

at com.kms.katalon.core.webui.model.SeleniumActionRetryController.performAction(SeleniumActionRetryController.java:96)

at com.kms.katalon.core.webui.model.SeleniumActionRetryController.performAction(SeleniumActionRetryController.java:83)

at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain$\_runKeywordUntilTimeout_closure1.doCall(WebUIKeywordMain.groovy:135)

at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain$\_runKeywordUntilTimeout_closure1.call(WebUIKeywordMain.groovy)

at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.runKeyword(WebUIKeywordMain.groovy:41)

at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.runKeywordUntilTimeout(WebUIKeywordMain.groovy:133)

at com.kms.katalon.core.webui.keyword.builtin.ClickKeyword.click(ClickKeyword.groovy:65)

at com.kms.katalon.core.webui.keyword.builtin.ClickKeyword.execute(ClickKeyword.groovy:38)

at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:89)

at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords.click(WebUiBuiltInKeywords.groovy:721)

at Script1762867004265.run(Script1762867004265.groovy:38)

... 13 more

)

1 Like

I would suggest you to insert some appropriate “wait” before you click the element.

And also you can try this:

2 Likes

also ensure element in the webpage is intractable before performing click action

1. Wait Until the Element Is Clickable

Insert a wait before clicking to ensure the element is actually interactable:

WebUI.waitForElementClickable(findTestObject('Customer Quick Entry/state selection'), 20)
WebUI.click(findTestObject('Customer Quick Entry/state selection'))

2. Use Enhanced Click

Katalon has an enhanced click that simulates more realistic click actions and can bypass some overlay/canvas issues:

WebUI.enhancedClick(findTestObject('Customer Quick Entry/state selection'))

3. Scroll Into View Before Action

If the dropdown is out of viewport, scroll to it before clicking:

WebUI.scrollToElement(findTestObject('Customer Quick Entry/state selection'), 5)
WebUI.click(findTestObject('Customer Quick Entry/state selection'))
1 Like

Here I would quote the full source code of the com.kms.katalon.core.webui.keyword.builtin.EnhancedClickKeyword class.

package com.kms.katalon.core.webui.keyword.builtin

import java.text.MessageFormat
import java.time.Duration
import org.openqa.selenium.JavascriptExecutor
import org.openqa.selenium.WebDriver
import org.openqa.selenium.WebElement
import org.openqa.selenium.interactions.Actions
import org.openqa.selenium.support.ui.ExpectedConditions
import org.openqa.selenium.support.ui.WebDriverWait

import com.kms.katalon.core.annotation.internal.Action
import com.kms.katalon.core.configuration.RunConfiguration
import com.kms.katalon.core.exception.StepFailedException
import com.kms.katalon.core.helper.KeywordHelper
import com.kms.katalon.core.keyword.internal.SupportLevel
import com.kms.katalon.core.model.FailureHandling
import com.kms.katalon.core.testobject.TestObject
import com.kms.katalon.core.trymonad.Try
import com.kms.katalon.core.webui.common.WebUiCommonHelper
import com.kms.katalon.core.webui.constants.StringConstants
import com.kms.katalon.core.webui.driver.DriverFactory
import com.kms.katalon.core.webui.keyword.internal.WebUIAbstractKeyword
import com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain
import groovy.transform.CompileStatic

@Action(value = "enhancedClick")
class EnhancedClickKeyword extends WebUIAbstractKeyword {

    @CompileStatic
    @Override
    public SupportLevel getSupportLevel(Object ...params) {
        return super.getSupportLevel(params)
    }

    @CompileStatic
    @Override
    public Object execute(Object ...params) {
        TestObject to = getTestObject(params[0])
        FailureHandling flowControl = (FailureHandling)(params.length > 1 && params[1] instanceof FailureHandling ? params[1] : RunConfiguration.getDefaultFailureHandling())
        click(to,flowControl)
    }

    private void scrollToElement(WebDriver webDriver, WebElement webElement) {
        try {
            Actions builder = new Actions(webDriver);
            builder.moveToElement(webElement);
            builder.build().perform();
        } catch(Exception e) {
            logger.logError(e.getMessage());
        }
        try {
            ((JavascriptExecutor) webDriver).executeScript("arguments[0].scrollIntoView(true);", webElement);
        } catch(Exception e) {
            logger.logError(e.getMessage());
        }
    }
    @CompileStatic
    public void click(TestObject to, FailureHandling flowControl) throws StepFailedException {
        WebDriver driver = DriverFactory.getWebDriver();
        int timeoutInSeconds = RunConfiguration.getTimeOut();
        long timeoutInMillis = RunConfiguration.getTimeOutInMillis();
        WebUIKeywordMain.runKeywordUntilTimeout({
            boolean isSwitchIntoFrame = false
            try {
                WebUiCommonHelper.checkTestObjectParameter(to)
                isSwitchIntoFrame = WebUiCommonHelper.switchToParentFrame(driver, to)
                WebElement webElement = WebUIAbstractKeyword.findWebElement(driver, to, timeoutInMillis)
                logger.logDebug(MessageFormat.format(StringConstants.KW_LOG_INFO_CLICKING_ON_OBJ, to.getObjectId()))
                Try.ofFailable({
                    logger.logDebug("Trying Selenium click !");
                    webElement.click();
                    return Boolean.TRUE;
                }).orElseTry({
                    logger.logDebug("Trying to scroll to the element, wait for it to be clickable and use Selenium click !");
                    scrollToElement(driver, webElement);
                    WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(timeoutInSeconds));
                    webElement = wait.until(ExpectedConditions.elementToBeClickable(webElement));
                    webElement.click();
                    return Boolean.TRUE;
                }).orElseTry({
                    logger.logDebug("Trying Javascript click !");
                    JavascriptExecutor executor = (JavascriptExecutor) driver;
                    executor.executeScript("arguments[0].click();", webElement);
                    return Boolean.TRUE;
                }).onSuccess({
                    logger.logPassed(MessageFormat.format(StringConstants.KW_LOG_PASSED_OBJ_CLICKED, to.getObjectId()))
                }).get();
            } finally {
                if (isSwitchIntoFrame) {
                    WebUiCommonHelper.switchToDefaultContent(driver)
                }
            }
        }, flowControl, RunConfiguration.getTakeScreenshotOption(), (to != null) ? MessageFormat.format(StringConstants.KW_MSG_CANNOT_CLICK_ON_OBJ_X, to.getObjectId())
        : StringConstants.KW_MSG_CANNOT_CLICK_ON_OBJ)
    }
}

If you read this source carefully, you would find how the WebUI.enhancedClick(TestObject) keyword works.

First, it simply tries invoking the click method of Selenium WebElement object.

When the first action faild, secondly, it scrolls the viewport so that the element is visible, and tries invoking the click method of Selenium WebElement object again.

When the second action failed, lastly, it tries to execute a JavaScript click by "argument[0].click();"


You have the jar files of the source codes in the ${KATALON STUDIO INSTALLATION_DIRECTORY}/configuration/resources/source on your PC.