1. A method for automatically crawling an application, comprising: navigating to an application interface using an application crawler and a sequence of commands; analyzing the application interface to find a set of user interface elements on the application interface; determining a set of commands that will interact with the user interface elements on the application interface; pushing each command in the set of commands onto a stack, individually, whereby each command is individually stored in the stack along with the sequence of commands; popping a new sequence of commands from the stack, wherein the new sequence of commands is: a command in the set of commands in sequence with the sequence of commands; and repeating the navigating, analyzing, determining, and pushing steps with: (i) the new sequence of commands replacing the sequence of commands; (ii) a new application interface replacing the application interface; (iii) a new set of user interface elements replacing the set of user interface elements; and (iv) a new set of commands replacing the set of commands.