- Adds the following "block" structures to Selenese:
- Function and loop parameters use regular Selenium variables that are local to the block, overriding variables of the same name, and that are restored when the block exits.
- Errors bubble upward through try/catch/finally blocks, which can be nested arbitrarily. Catching an error cancels it, but can be re-thrown.
- Variables can be configured via external XML and/or JSON files.
- A function definition can appear anywhere, (they are skipped over in normal execution flow).
- Functions can be called recursively.