Problem Analysis
You’ve identified a known architectural limitation in Katalon Studio 10 when attempting hybrid testing with both Web and Windows components. Here’s what’s happening:
The Core Issue:
- In Katalon 9, you manually initialized the WindowsDriver, which allowed you to control when and how the driver was instantiated
- In Katalon 10, the FlaUI driver (Windows driver) is now integrated and automatically managed by Katalon Studio
- Critical Limitation: Katalon Studio 10 is designed to work with one driver at a time per execution profile. When you use the Windows execution profile, it initializes the Windows driver, but the architecture doesn’t support simultaneous initialization of both Web and Windows drivers in a single test execution
This is an architectural constraint, not a configuration issue—which is why your CustomCapabilities approach isn’t working as expected.
Solution / Recommended Approaches
Option 1: Separate Test Cases (Recommended for Katalon 10)
Split your hybrid test into separate test cases:
- Test Case 1 - Windows Fragment: Execute all Windows-specific operations
- Test Case 2 - Web Fragment: Execute all Web-specific operations
- Test Suite: Call both test cases sequentially
// Test Suite execution flow
WebUI.callTestCase(findTestCase('Windows/WindowsOperations'), [:])
WebUI.callTestCase('Web/WebOperations', [:])
Advantages:
- Each test case uses its appropriate driver (Windows or Web)
- No driver conflicts
- Cleaner separation of concerns
- Easier to maintain and debug
Option 2: Use Custom Keywords with Driver Management
Create custom keywords that manage driver switching:
// CustomKeywords/HybridTestingKeywords.groovy
@Keyword
def switchToWindowsDriver() {
// Initialize Windows driver context
Windows.startApplication('path/to/app.exe')
}
@Keyword
def switchToWebDriver() {
// Initialize Web driver context
WebUI.openBrowser('https://your-url.com')
}
@Keyword
def performWindowsActions() {
switchToWindowsDriver()
// Windows operations here
Windows.click(findTestObject('Windows/Button'))
}
@Keyword
def performWebActions() {
switchToWebDriver()
// Web operations here
WebUI.click(findTestObject('Web/Button'))
}
Then in your test case:
performWindowsActions()
performWebActions()
Option 3: Sequential Execution with Proper Cleanup
If you must keep operations in one test case, ensure proper driver lifecycle management:
// Test Case: Hybrid Test
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
import com.kms.katalon.core.windows.keyword.WindowsBuiltinKeywords as Windows
// Phase 1: Windows Operations
Windows.startApplication('C:\\path\\to\\app.exe')
Windows.click(findTestObject('Windows/LoginButton'))
Windows.setText(findTestObject('Windows/UsernameField'), 'testuser')
Windows.delay(2)
Windows.closeApplication()
// Phase 2: Web Operations (after Windows driver is closed)
WebUI.openBrowser('https://your-application.com')
WebUI.click(findTestObject('Web/LoginButton'))
WebUI.setText(findTestObject('Web/UsernameField'), 'testuser')
WebUI.closeBrowser()
Key Considerations
Why CustomCapabilities Doesn’t Work for Hybrid Testing
The CustomCapabilities feature in Katalon 10 is designed to configure one driver with multiple capabilities, not to initialize multiple different drivers simultaneously. The documentation explicitly states:
“You can have at most one web driver and one mobile driver here since there may be a potential conflict if you use multiple web or mobile drivers in the same test execution.”
This limitation applies to Web + Windows combinations as well.
Migration Notes from Katalon 9 to 10
- Driver Initialization: In KS 10, the FlaUI driver auto-starts on
localhost:4723 (no manual initialization needed)
- Desired Capabilities: Update any custom capabilities with the
appium: prefix (e.g., appium:appWorkingDir, appium:appArguments)
- Known Limitations (per official docs):
- Application closing may be delayed
- Multiple windows can cause focus issues
- Dropdown lists and context menus cannot be inspected locally
Best Practice for Hybrid Projects
- Use Execution Profiles: Create separate profiles for Windows and Web testing
- Modularize Test Cases: Keep Windows and Web operations in separate test cases
- Use Test Suites: Orchestrate the execution flow through test suites
- Leverage Custom Keywords: Abstract driver-specific logic into reusable keywords
References
Bottom Line: The simultaneous initialization of both Web and Windows drivers in a single execution is an architectural limitation in Katalon 10. The recommended approach is to split your hybrid test into separate test cases or use sequential execution with proper driver lifecycle management. This aligns with Katalon’s design philosophy and will provide more stable, maintainable tests.