Fix Poorly Named/Broken APIs

getAttribute

This API will return a property when asked to retrieve the content of the value attribute. It will do this even when the value attribute is undefined!

This is wrong, because…

  • An element property is not the same as an element attribute.

Note: Perhaps it always returns properties, I did not test that.

Because there is existing test code reliant on the current behavior, the documentation should make clear this API is deprecated in favor of two new APIs which do the correct thing:

getElementAttribute get the value of the specified attribute

setElementAttribute set the specified attribute.

A note should be added to the documentation for setElementAttribute that it will likely change the expected behavior of the DOM form.reset API (if used by the AUT).


setText and getText

Ideally, these two APIs would be the compliment of each other but sadly that is not the case.

setText sets the value property of an input element.

getText performs a trimmed innerText property retrieval which does not work at all with the value property of input elements.

Because there is existing code that relies on the current behavior, the documentation should make clear these APIs are deprecated in favor of new APIs which do the correct thing:

setElementValue sets the value property of an element.

getElementValue returns the value property of an element.

getElementInnerText returns the timmed innerText content of the element.


For completeness’ sake, perhaps there should be a generic setElementProperty, also (although I am not certain of its true need in everyday testing).

I thought long and hard about reporting these as “bugs” but in the end went with “suggestions”. Either way, Katalon Studio and its stable of related tools are supposed to help enable quality assurance in software - the least it could do is provide a meaningful and easily reasoned about set of APIs.

Right? :sunglasses:

5 Likes

+1

Right!
+1

Bump - if only because of

which completely makes my point.

I agree with Russ. Some methods may be confusing in some cases.

Or - at least - have a comprehensive documentation of current methods to let user know what the method outcome would be.

And another victim rescued from the brink of …

Okay, that’s bit too dramatic, but still…

1 Like

Hi,

Please refer the below blog. You may have an idea on API Interoperability.
https://www.meritedin.com/robust-api.html

Please don’t forget to take a look on the videos listed on their playlist.