I tried patching the Katalon Studio engine by writing Groovy classes in the Include/scripts/groovy
folder as devalex88 suggested. I worked on my GitHub project Cannot_find_elements_when_XPath_expression_is_null. You can checkout the tag 0.4 to my last code.
patching the class com.kms.katalon.core.util.internal.ExceptionsUtil
devalex88 suggested this patch.
The patch resulted the following stacktrace: log_withPatchToExceptionsUtil.txt
com.kms.katalon.core.exception.StepFailedException: Unable to verify object 'Object Repository/Page_AngularJS Hub Text Inputs/iframe_Example_exampleIFrame' is present (Root cause: java.lang.IllegalArgumentException: Cannot find elements when the XPath expression is null.)
at com.kms.katalon.core.keyword.internal.KeywordMain.stepFailed(KeywordMain.groovy:36)
at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.stepFailed(WebUIKeywordMain.groovy:65)
at com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain.runKeyword(WebUIKeywordMain.groovy:27)
at com.kms.katalon.core.webui.keyword.builtin.VerifyElementPresentKeyword.verifyElementPresent(VerifyElementPresentKeyword.groovy:92)
at com.kms.katalon.core.webui.keyword.builtin.VerifyElementPresentKeyword.execute(VerifyElementPresentKeyword.groovy:68)
at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:53)
...
This stacktrace is NOT interesting. I want to know which line of code in which method of which class raied the IllegalArgumentException. But this statcktrace does not tell me.
patching the class com.kms.katalon.core.webui.keyword.internal.WebUIKeywordMain
class.
I suggested this at Cannot find elements when XPath expression is null.
This patch resulted the following statcktrace: log_withPatchToWebUIKeywordMain.txt
...
at com.kms.katalon.core.webui.common.WebUiCommonHelper.buildLocator(WebUiCommonHelper.java:497)
...
at com.kms.katalon.core.webui.keyword.builtin.VerifyElementPresentKeyword$_verifyElementPresent_closure1.doCall(VerifyElementPresentKeyword.groovy:79)
These lines are informative. I could find that the Exception was raised at line497 in WebUiCommonHelper
case XPATH:
return By.xpath(to.getSelectorCollection().get(selectorMethod));
I can conclude that the expression to.getSelectedCollection().get(selectorMethod)
returned null. This is the root cause of the problem!
My conclusion
Patching ExceptionsUtil class is not useful, but patching WebUIKeywordMain class is useful.