Simple Test Case Playback Cannot Advance Past WebUI.openBrowser

Katalon Studio Enterprise, Windows 11

Version 10.3.2-0cbb703d07

Chrome WebDriver has been updated.

I am new to Katalon Studio, and having mixed success at simple web capture and playback. I’ve deleted all projects and started fresh to diagnose issues.

I’m currently using a new project with all default settings, save for a custom profile. This profile runs correctly during a simple Chrome web capture. However, when attempting playback, the browser opens but ‘WebUI.navigateToUrl’ is never reached, the test run hangs at ‘WebUI.openBrowser’. No error is displayed. Current attempt has been running for 10 minutes.

WebUI.openBrowser(‘’)

WebUI.navigateToUrl(‘https://www.nba.com/’)

WebUI.click(findTestObject(‘Object Repository/Page_The official site of the NBA for the l_b9fc5d/span_Games’))

Console shows:

2026-01-19 16:50:42.246 INFO c.k.katalon.core.main.TestCaseExecutor - --------------------

2026-01-19 16:50:42.248 INFO c.k.katalon.core.main.TestCaseExecutor - START Test Cases/NBA.com test case

2026-01-19 16:50:42.974 DEBUG testcase.NBA.com test case - 1: openBrowser(“”, CONTINUE_ON_FAILURE)

2026-01-19 16:50:43.353 INFO c.k.k.core.webui.driver.DriverFactory - Starting ‘Chrome’ driver

2026-01-19 16:50:43.358 INFO c.k.k.c.w.util.WebDriverPropertyUtil - User set preference: [‘args’, ‘[user-data-dir=C:\Users\TIMURPJ\AppData\Local\Google\Chrome\User Data, profile-directory=AutomationProfile]’]

2026-01-19 16:50:43.404 INFO c.k.k.core.webui.driver.DriverFactory - Action delay is set to 0 milliseconds

2 Likes

hi @timothy.murphy

maybe you can try the common solution first, this usually happens when Chrome auto-updates and the bundled ChromeDriver no longer matches

update it via Tools → Update Web Drivers, restart Katalon, and try again

1 Like

It seems that you, @timothy.murphy, are trying to open Chrome using a custom Chrome profile. I know that this sort of attempt would involve a lot of technical difficultils. The attempt is not what a beginner usually tries. Is it necessary?

If it is not necessary, I would recommend you to remove the “user-data-dir” out of the preference.


Chrome browser controls that only a signle instance of Chrome process to have access to the folder opened as “user-data-dir”. If a Chrome process is already running with “user-data-dir=C:\Users\TIMURPJ\AppData\Local\Google\Chrome\User Data” and you try to launch another Chrome process while specifying the same path as “user-data-dir”, then the late-commer will abort. Therefore you need to make sure that you close all Chrome windows before you start the test. I guess, you have one or more Chrome window(s) are open and running, which would prevent your test to run.

1 Like

Katalon Studio test playback hangs at WebUI.openBrowser('') due to ChromeDriver version mismatch after Chrome auto-updates.
The custom profile (--user-data-dir and profile-directory=AutomationProfile) may also conflict if locked by another Chrome instance.​

Quick Fixes

  • Go to Tools > Update Web Drivers, select Chrome, and update/restart Katalon.​
  • Kill lingering Chrome/ChromeDriver processes in Task Manager before replay.​
  • Test with default profile: Remove custom args in Project > Settings > Desired Capabilities > Chrome.​

Verify Setup

Update to latest Katalon Studio (10.4+ recommended) for better Chrome 143+ support. Check logs for “chromedriver version might not be compatible” warnings.​

Test Alternatives

  • Use WebUI.openBrowser('https://www.google.com') directly to bypass empty URL hang.​
  • Run in Headless mode or Edge browser to isolate Chrome issues

Try all the options and let us know

1 Like

I’m having success this morning. I believe it was related to lingering ChromeDriver instances.

You suggest to avoid configuring a Chrome profile. This creates an immediate issue or 2.

  1. How do I web record without a profile that has Katalon Recorder Plus extension? Without a profile configured that has the extension, launching web record can only open a browser, but then fails to capture anything in the DOM. If I then manually change the profile to one with the extension, capture works. This is precisely what I expected, and why I assumed a profile is required for capture.
  2. At some point I’ll need to navigate MFA. One solution is using a profile in order to persist a session I opened manually. How would I accomplish this without using a profile?
1 Like

Sorry, I don’t understand your issue.

I don’t know what Katalon Recorder Plus extension is. According to the doc

  1. (Optional) Install Katalon Studio Recording Engine extension. You can skip this step if you are not using Active Browser mode.

Then, you want to use Active Browser mode for using Katalon Studio Recording Plus, do you? I do not know what Active Browser mode is. I do not see why you want Active Browser mode.

Anyway, I am not capable to discuss about these topics. You should contact Katalon’s Official Support if possible.

1 Like

I have no idea how to automate Multi Factor Authorization using Selenium WebDriver (including Katalon Studio). I believe, the Selenium WebDriver protocol is not designed with MFA automation in mind. Again, you should ask Katalon’s Official support for help if possible.

I doubt if it is feasible. Years ago, I have ever tried it. See

Once my code worked, but later it failed. Despite all my efforts, I could not make my library stable. The difficulty was that Chrome browser changes its internal behaviour. I got tired of following the continuous evolutions of Chrome browser and eventually abandoned my attempt.


If I were you, I would rather check Playwright. When I searched Google for “how to automate Multi Factor Authentication using Playwright”, it responded many resources to check. For example,

1 Like

Hi @timothy.murphy Chrome version 135 and above could cause the browser to hang on launch in Katalon Studio. Starting from Chrome 136, Chrome no longer allows using the default Chrome folder for security reasons. As a workaround, users need to use a use a non-default profile folder or copy the Profile folder to a different location and set the data-dir to this new path. Please try to duplicate the AutomationProfile folder and save it on another location path such as Desktop, then modify the user-data-dir path. Similar like this
‘args’, ‘[user-data-dir=C:\Users\TIMURPJ\Desktop, profile-directory=AutomationProfile]’

2 Likes

In the article Changes to remote debugging switches to improve security  |  Blog  |  Chrome for Developers which @vi.kim quoted, I found an interesting sentence as follows:

For browser automation scenarios, we recommend using Chrome for Testing which will continue to respect the existing behavior.

Really, Chrome for Testing will be a good friend for @timothy.murphy . The goodness of Chrome for Testing is that it does NOT auto-upgrade itself so that you can fix the Chrome version to use.

3 Likes

What kind of MFA is there in your app?

If it is Time Based OTP where you get the code on your like Google Authenticator or Microsoft Authenticator, I can provide you the solution.

1 Like

Its Microsoft Authenticator, with a time based OTP. Would love to hear your thoughts on how to approach this.

1 Like

@timothy.murphy

For TOTP (Time based OTP), the Pre-Requisites that you would need

  1. aerogear-otp-java jar file. You can download it from Maven Repos.

  2. A 32 digit secret key. This is usually shown when you first need to set-up your MFA. Something like this

Add libraries in Katalon :

  • Navigate to Project → Settings → Library Management → Add the aerogear-otp-java jar file that you downloaded earlier

Actual Code :

Create a keyword to fetch the OTP and pass the 32 digit secret key that you saved earlier.

	@Keyword
	def GetMFATokenNow(secret) {
		Totp totp = new Totp(secret)
		return totp.now()
	}

Then you can use this OTP in your testcase or Keyword.

@Keyword
def Login_To_mApp_As_External_User(Email, Password, secret) {

		Launch_Browser_And_Open_mApp()
		WebUI.setText(findTestObject('Login/Login_Page/EmailId_input'), Email)
		WebUI.setMaskedText(findTestObject('Login/Login_Page/Password_input'), Password)
		WebUI.click(findTestObject('Object Repository/Login/Login_Page/Continue_button_for_Code'))

		def otp_now = GetMFATokenNow(secret)

		WebUI.setText(findTestObject('Object Repository/Login/Authenticator_Page/Passcode_input'), otp_now)

		WebUI.click(findTestObject('Object Repository/Login/Login_Page/Continue_button_for_Code'))
		}

Additional Suggestion (skip if you are at a very initial stage):

  • When your test suite grows and you want run test cases in Parallel, try not to use same user across multiple test suites. The reason why I’m highlighting this is, the OTP changes only every 30 seconds, now if you have 2 or multiple test cases running in parallel and trying to use the same OTP, then only one of the test cases will accept the OTP and rest will say it is an invalid OTP.
  • To overcome this you will need to catch the error and wait for the new OTP to generate and then send it your test case.
3 Likes

@timothy.murphy
was the solution helpful to you for generating OTP?