why does a FindFailed exception stop my script? --- use exists() instead of find()
- Keywords:
- findfailed if exists find
- Last updated by:
- RaiMan
I'm using sikuli to book into gym classes online for my work colleagues. I have the basic functionality working, but one of the flaws about the log in process is that if someone logs in to check their details and doesnt log out, the script to log in bugs out and the whole process fails. Therefore I need it to check on the first page it goes to, if LOG OUT is an option.
I found a similar question on this and tried the solution but i get a Cannot find img error before it even gets to the if.
img = ( LOGOUT)
if find(LOGOUT ):
click( logout )
wait(2)
type(accountan
wait(2)
else:
type(accountan
wait(2)
bugs out on first line. Causing me headache.
any ideas? and what would I have to do to make it look for one of 2 pictures, like logout or page is currently unavailable?
--- Answer
find() cannot be used in if/elif/while, since it does not return if not found, but stops the script with a FindFailed exception.
The appropriate method is exists(), which is functionally equivalent, but returns None in this case.
the most compact form for such cases:
click(exists(
this would click the match found by exists() or does nothing in case not found.
or in long form if you want to add more scripting:
if exists(
click(
wait(2)
# some more code
# after the if