Search code examples
jythonmarathontesting

Testing if an object is enabled in Marathon


I'm trying to do some data driven testing with Marathon and I'm entering in some data on a screen. The problem that I'm having is that one of the JComboBoxes that I'm trying to fill in is not always enabled(i.e. sometimes it goes to a default value). I need to be able to skip the step if the JComboBox is not enabled.

if object enabled:
    select('object', 50) #otherwise skip and move on

I've tried to use the assertEnabled call, but I can't figure out exactly what that returns. I've embedded the assertEnabled in an if-statement and I didn't get any syntax errors, but whenever I execute the test it gets hung up on the if-statement and does nothing. I wish it would throw an error so that I could just use a try catch, but it doesn't. Any suggestions on how I can get it to pass over the step if a certain object is not enabled? Also, I'd rather not use a timer and have it look for a certain period of time because we run thousands of test cases in our regression and this would make the script take days if not weeks to complete.


Solution

  • Marathon has a get_component function that gives you the actual Java component (see the "script interface" section in the documentation). This function will pause for a time and then fail if the object can't be found.

    But assuming that the object exists, you could find it with get_component and then obtain its status by invoking java.awt.Component's isEnabled on it.