There are many ways to do any job. The following methodology and approach to Selenium testing is just one approach. There are other approaches and you should use an approach that works for you. The purpose of this article is to outline one integrated approach where someone new to ERSelenium and Selenium testing wants some direction on how to get effective robust Selenium testing implemented:
You have configured your application for "EntityDevelopmentDefaults" which saves you a lot of typing during general development of WebObjects pages requiring data entry and allows you tom quickly develop higher level Selenium tests that involve mostly clicking on page controls while the majority of data entry geta automatically taken care of by the "EntityDevelopmentDefaults" feature.
It is assumed you are using FireFox and the Selenium IDE and FireBug plugins
Using the Selenium IDE, you can record a test to get a feel for the syntax of Selenium commands, or to quickly see the syntax for a specific type of user interface interaction, however, recorded tests are generally very fragile and will fall apart on dynamic pages where the layout and content are not static.
So before we discuss building robust tests, let's first itemize our objectives or criteria under which our tests should operate robustly:
Probably the best way to understand Selenium command, target, value combinations is by looking at the Selenium Command Examples.
The @include tag is ideal for those common setup and teardown tasks. It is common for a test to go to the main application entry page and to login as its first step. Here is how we could use @include meta tag to make this a reusable.
These allow you to specify portions of a test to be repeated.
The @repeat tag denotes the beginning of the portion to be repeated and the @done denotes the end of the portion to be repeated. These (can/cannot?) be nested?
The first pass thru the repeated segment, the actual values in the test are used and on consecutive repetitions the items from the @values list are substituted into the value part (the 3rd column) of the step immediately following the @values declaration