Forum Discussion
Like I said, I don't know your syntax.
You want to be able to have either one of those conditions be true for the true part of the switch. If you can't embed it in the switch, then use an if statement to test the condition and set a variable to true/false from that and then use the variable for the switch.
I have adjusted the code to include the following example
let navigate = Aliases.browser.page.nav
let navbar = Aliases.browser.page.header
if (!navigate.WaitAliasChild('carrier', 5000).Width == 0 || navigate.WaitAliasChild('carrier', 5000).Exists) {
Log.Message("carrier exists");
}
else {
Log.Message("carrier ");
}
}
Even in this case, the test case fails and stops because item does not exist.
The function will not go to else
- tristaanogre6 years agoEsteemed Contributor
Right... because you're calling code in your IF clause for an object that might not exist yet. Your "Exists" check should happen first, before anything else, as anything else will fail if the object does not exist.
let navigate = Aliases.browser.page.nav let navbar = Aliases.browser.page.header if (navigate.WaitAliasChild('carrier', 5000).Exists){ if (navigate.WaitAliasChild('carrier', 5000).Width != 0) { Log.Message("carrier exists"); } else { Log.Message("carrier "); } }
- TanyaYatskovska6 years agoSmartBear Alumni (Retired)
- AlexKaras6 years agoChampion Level 3
Hi,
> if (!navigate.WaitAliasChild('carrier', 5000).Width == 0 || navigate.WaitAliasChild('carrier', 5000).Exists)
> because you're calling code in your IF clause for an object that might not exist yet.
If you don't like nested conditions, you may use the fact that JScript uses short circuit conditionals. The code in this case may look like this:
if ((navigate.WaitAliasChild('carrier', 5000).Exists) && (navigate.carrier.Width > 0))
// sucess
else
// failure
Related Content
- 12 months ago
- 6 years ago