Avoid staktrace in console with getWindowTitle()

Hello,
I use this code in order to use existing browser if previously open, and to open a new browser if not :

String titre = null
try {
	titre = WebUI.getWindowTitle(FailureHandling.OPTIONAL)
} catch (Exception e) {
	println ("Fenetre navigateur non trouvée par getWindowTitle()")
}

if (titre == null) {
	WebUI.openBrowser('')
	WebUI.navigateToUrl(G_URL)
	titre = WebUI.getWindowTitle(FailureHandling.OPTIONAL)
}

My problem is that when browser is not opened, getWindowTitle() always print Exception stacktrace in the console, regardless FailureHandling value.

Do you know a way to avoid this big statcktrace in my console if getWindowTitle() does not find brower ?

Only difference is that only STOP_ON_FAILURE is going into the catch block.

Here are my 3 tests :

  • When using OPTIONAL, I got :
2021-04-08 16:16:22.709 DEBUG testcase.Authentification si besoin      - 1: titre = getWindowTitle(OPTIONAL)
2021-04-08 16:16:23.236 WARN  c.k.k.core.keyword.internal.KeywordMain  - Unable to get the title of the current window (Root cause: com.kms.katalon.core.exception.StepFailedException: Unable to get the title of the current window
	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.GetWindowTitleKeyword.getWindowTitle(GetWindowTitleKeyword.groovy:71)
	at com.kms.katalon.core.webui.keyword.builtin.GetWindowTitleKeyword.execute(GetWindowTitleKeyword.groovy:66)
	at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:73)
	at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords.getWindowTitle(WebUiBuiltInKeywords.groovy:197)
	at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords$getWindowTitle.call(Unknown Source)
	at Authentification si besoin.run(Authentification si besoin:30)
	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:394)
	at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:385)
	at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:364)
	at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:356)
	at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:251)
	at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:114)
	at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:105)
	at com.kms.katalon.core.main.TestCaseMain$runTestCase$0.call(Unknown Source)
	at TempTestCase1617891375830.run(TempTestCase1617891375830.groovy:25)
Caused by: com.kms.katalon.core.webui.exception.BrowserNotOpenedException: Browser is not opened
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'POPHG71247', ip: '10.99.98.49', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_181'
Driver info: driver.version: unknown
	at com.kms.katalon.core.webui.driver.DriverFactory.verifyWebDriverIsOpen(DriverFactory.java:931)
	at com.kms.katalon.core.webui.driver.DriverFactory.verifyWebDriver(DriverFactory.java:916)
	at com.kms.katalon.core.webui.driver.DriverFactory.getWebDriver(DriverFactory.java:902)
	at com.kms.katalon.core.webui.keyword.builtin.GetWindowTitleKeyword$_getWindowTitle_closure1.doCall(GetWindowTitleKeyword.groovy:73)
	at com.kms.katalon.core.webui.keyword.builtin.GetWindowTitleKeyword$_getWindowTitle_closure1.call(GetWindowTitleKeyword.groovy)
	at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.runKeyword(WebUIKeywordMain.groovy:20)
	at com.kms.katalon.core.webui.keyword.builtin.GetWindowTitleKeyword.getWindowTitle(GetWindowTitleKeyword.groovy:71)
	at com.kms.katalon.core.webui.keyword.builtin.GetWindowTitleKeyword.execute(GetWindowTitleKeyword.groovy:66)
	at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:73)
	at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords.getWindowTitle(WebUiBuiltInKeywords.groovy:197)
	at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords$getWindowTitle.call(Unknown Source)
	at Script1571667702407.run(Script1571667702407.groovy:30)
	... 11 more
)
2021-04-08 16:16:23.246 DEBUG testcase.Authentification si besoin      - 9: if (titre == null)
  • When using STOP_ON_FAILURE, I get in my console :
2021-04-08 16:14:17.778 DEBUG testcase.Authentification si besoin      - 1: titre = getWindowTitle(STOP_ON_FAILURE)
2021-04-08 16:14:18.413 ERROR c.k.k.core.keyword.internal.KeywordMain  - ❌ Unable to get the title of the current window (Root cause: com.kms.katalon.core.exception.StepFailedException: Unable to get the title of the current window
	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.GetWindowTitleKeyword.getWindowTitle(GetWindowTitleKeyword.groovy:71)
	at com.kms.katalon.core.webui.keyword.builtin.GetWindowTitleKeyword.execute(GetWindowTitleKeyword.groovy:66)
	at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:73)
	at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords.getWindowTitle(WebUiBuiltInKeywords.groovy:197)
	at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords$getWindowTitle.call(Unknown Source)
	at Authentification si besoin.run(Authentification si besoin:30)
	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:394)
	at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:385)
	at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:364)
	at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:356)
	at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:251)
	at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:114)
	at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:105)
	at com.kms.katalon.core.main.TestCaseMain$runTestCase$0.call(Unknown Source)
	at TempTestCase1617891250842.run(TempTestCase1617891250842.groovy:25)
Caused by: com.kms.katalon.core.webui.exception.BrowserNotOpenedException: Browser is not opened
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'POPHG71247', ip: '10.99.98.49', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_181'
Driver info: driver.version: unknown
	at com.kms.katalon.core.webui.driver.DriverFactory.verifyWebDriverIsOpen(DriverFactory.java:931)
	at com.kms.katalon.core.webui.driver.DriverFactory.verifyWebDriver(DriverFactory.java:916)
	at com.kms.katalon.core.webui.driver.DriverFactory.getWebDriver(DriverFactory.java:902)
	at com.kms.katalon.core.webui.keyword.builtin.GetWindowTitleKeyword$_getWindowTitle_closure1.doCall(GetWindowTitleKeyword.groovy:73)
	at com.kms.katalon.core.webui.keyword.builtin.GetWindowTitleKeyword$_getWindowTitle_closure1.call(GetWindowTitleKeyword.groovy)
	at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.runKeyword(WebUIKeywordMain.groovy:20)
	at com.kms.katalon.core.webui.keyword.builtin.GetWindowTitleKeyword.getWindowTitle(GetWindowTitleKeyword.groovy:71)
	at com.kms.katalon.core.webui.keyword.builtin.GetWindowTitleKeyword.execute(GetWindowTitleKeyword.groovy:66)
	at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:73)
	at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords.getWindowTitle(WebUiBuiltInKeywords.groovy:197)
	at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords$getWindowTitle.call(Unknown Source)
	at Script1571667702407.run(Script1571667702407.groovy:30)
	... 11 more
)
2021-04-08 16:14:18.427 DEBUG testcase.Authentification si besoin      - 7: catch (Exception e)
2021-04-08 16:14:18.431 DEBUG testcase.Authentification si besoin      - 1: println("Fenetre navigateur non trouvée par getWindowTitle()")
Fenetre navigateur non trouvée par getWindowTitle()
2021-04-08 16:14:18.444 DEBUG testcase.Authentification si besoin      - 2: e.printStackTrace()
  • When using CONTINUE_ON_FAILURE, I get in my console :
2021-04-08 16:12:07.417 DEBUG testcase.Authentification si besoin      - 1: titre = getWindowTitle(CONTINUE_ON_FAILURE)
2021-04-08 16:12:07.930 ERROR c.k.k.core.keyword.internal.KeywordMain  - ❌ Unable to get the title of the current window (Root cause: com.kms.katalon.core.exception.StepFailedException: Unable to get the title of the current window
	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.GetWindowTitleKeyword.getWindowTitle(GetWindowTitleKeyword.groovy:71)
	at com.kms.katalon.core.webui.keyword.builtin.GetWindowTitleKeyword.execute(GetWindowTitleKeyword.groovy:66)
	at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:73)
	at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords.getWindowTitle(WebUiBuiltInKeywords.groovy:197)
	at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords$getWindowTitle.call(Unknown Source)
	at Authentification si besoin.run(Authentification si besoin:30)
	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:394)
	at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:385)
	at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:364)
	at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:356)
	at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:251)
	at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:114)
	at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:105)
	at com.kms.katalon.core.main.TestCaseMain$runTestCase$0.call(Unknown Source)
	at TempTestCase1617891120908.run(TempTestCase1617891120908.groovy:25)
Caused by: com.kms.katalon.core.webui.exception.BrowserNotOpenedException: Browser is not opened
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'POPHG71247', ip: '10.99.98.49', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_181'
Driver info: driver.version: unknown
	at com.kms.katalon.core.webui.driver.DriverFactory.verifyWebDriverIsOpen(DriverFactory.java:931)
	at com.kms.katalon.core.webui.driver.DriverFactory.verifyWebDriver(DriverFactory.java:916)
	at com.kms.katalon.core.webui.driver.DriverFactory.getWebDriver(DriverFactory.java:902)
	at com.kms.katalon.core.webui.keyword.builtin.GetWindowTitleKeyword$_getWindowTitle_closure1.doCall(GetWindowTitleKeyword.groovy:73)
	at com.kms.katalon.core.webui.keyword.builtin.GetWindowTitleKeyword$_getWindowTitle_closure1.call(GetWindowTitleKeyword.groovy)
	at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.runKeyword(WebUIKeywordMain.groovy:20)
	at com.kms.katalon.core.webui.keyword.builtin.GetWindowTitleKeyword.getWindowTitle(GetWindowTitleKeyword.groovy:71)
	at com.kms.katalon.core.webui.keyword.builtin.GetWindowTitleKeyword.execute(GetWindowTitleKeyword.groovy:66)
	at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:73)
	at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords.getWindowTitle(WebUiBuiltInKeywords.groovy:197)
	at com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords$getWindowTitle.call(Unknown Source)
	at Script1571667702407.run(Script1571667702407.groovy:30)
	... 11 more
)
2021-04-08 16:12:07.949 DEBUG testcase.Authentification si besoin      - 9: if (titre == null)

How about this?

boolean browserIsOpen(){
	try {
		return DriverFactory.getWebDriver().toString() != ''
	} catch (Exception e) {
		return false
	}
}

if (!browserIsOpen()) {
	WebUI.openBrowser('')
	WebUI.navigateToUrl(G_URL)
}
1 Like

I’m not certain, but I didn’t think you can test if a string is null the way you are doing. (You are trying to see if the String pointer is null when it doesn’t exist yet so there is no pointer.) You may find it worthwhile to set titre to an empty string instead.
def titre = "";

And then;
if (titre == "") {
or
if (titre.isEmpty()) {

Thank you @jvisser , it is exactly what I needed :grinning:
Next time, I will think about using DriverFactory function when katalon’s does not fit to my needs as you !

Sorry for answering so late, I expected to receive a notification mail when receiving an answer from katalon forum, but I never received it.

1 Like

hello
@grylion54,
usually I have no problem with “if (titre==null )”
it works when just initialised by “String titre=null” (it should also work only with “String titre”)