Believe it or not, the history of the WebUI.waitForElement____() and WebUI.verifyElement____() families of methods goes way back, and the implementation has never been great in my opinion, at least not for the type of custom scripting that you’re talking about. I have several very old topics on it.
I think the biggest thing that is missing from this conversation is that most of the WebUI methods are tailored to work out-of-the box with scripts from Katalon Recorder. I think there is reluctance to change/add to these built-in keywords for several reasons.
1.) Changing the implementation this late in the game could potentially be catastrophic for teams that are using (and paying for) Katalon studio. They are kinda “stuck” with the current implementation.
2.) Adding a family if WebUI.isElement____() methods wouldn’t risk breaking any existing code, but it just doesn’t make sense in the context of a recorded script. Like, if you’ve ever recorded a script yourself, or at least looked at an example one, it’s basically just a series of WebUI calls, and no variable assignments. So doing something like:
def checked = WebUI.isElementChecked(...)
doesn’t make a lot of sense to a recorded script. It’s not actionable, where “waitFor” and “verify” are.
However, I don’t think these are arguments against the Katalon team addressing your question. I agree that it should be considered at least. But at the end of the day, you’ll find hundreds of examples of where the built in keyword doesn’t do exactly what you want it to, so you may as well get used to implementing things yourself