Many people doing Selenium testing, both new and experienced people, don't realize that data-driven testing can be done with the IDE. Let's see how to do this with a simple example -- a test that checks for correct targets of the links in the Sauce Labs footer. Here are the steps to follow:
- Download the flowcontrol extension for IDE. ("Download" is a bit of a misnomer here, as the download link takes one to an HTML page. Simply copy/paste only the JavaScript contents of that page into a file named goto_sel_ide.js.)
- Download the 1.1 version of the includeCommand4IDE extension. (The just-released 1.2 version appears to have a serious bug.)
- Download the most recent version (0.2) of the datadriven.js extension.
- Install these 3 extensions in IDE via the Selenium Core extensions field (accessible via Options=>Options=>General). They must be specified in the order above!!!
- Re-start IDE so that all 3 extensions will get read in.
- Create an .xml file:
<testdata> <test linkText="How It Works" title="Sauce OnDemand: Cross browser testing with hosted Selenium testing in the cloud - Sauce Labs"/> <test linkText="Downloads" title="Sauce Labs Downloads"/> <test linkText="Pricing" title="Sauce Labs Pricing For Hosted Selenium in the Cloud"/> <test linkText="Support" title="Support: Sauce RC (Selenium RC) - Sauce Labs"/> <test linkText="Forums" title="Sauce Labs Forums"/> <test linkText="Blog" title="Selenium Testing? Do Cross Browser Testing with Sauce Labs"/> <test linkText="Flash/Flex Solution" title="Automate testing of your Flex and Flash Web Apps - Sauce Labs"/> <test linkText="Documentation" title="Documentation - Sauce Labs"/> <test linkText="About" title="About - Sauce Labs"/> <test linkText="Team" title="The Sauce Labs Team"/> <test linkText="News" title="Selenium News & Events - Sauce Labs"/> <test linkText="Webinars" title="Webinars - Sauce Labs"/> <test linkText="Contact us" title="Support Contact - Sauce Labs"/> <test linkText="Service Status" title="Status - Sauce Labs"/> </testdata>
linkText and title are variable names of my choosing. You can use any names you want, and also any number of variables you want. The critical thing is that each <test> container must contain all the data--input and output--for a single test case. - View your .xml file in the browser to ensure that it does not contain any errors (only necessary if you did not use an XML editor to create the file).
- Utilize your .xml file via creating an HTML test case:
loadTestData file:///Users/mamp/Desktop/BLOG/saucelabs-footer.xml open http://www.saucelabs.com while !testdata.EOF() nextTestData clickAndWait link=${linkText} verifyTitle ${title} goBackAndWait endWhile
Be sure to replace the URL for the .xml file provided to loadTestData above with the appropriate URL on your computer.
Notice that I haven't said how I gathered the data for the .xml file above. What if you had to develop a similar data-driven test case, only for a site involving hundreds of links such as De Anza College's A-Z Directory? In my next Selenium Resources for Newbs post, I'll show how IDE can be used to generate the .xml needed for such a test case. Mary Ann May-Pumphrey is a software QA engineer at StumbleUpon. She has taught Selenium courses at both De Anza College in Cupertino and Santa Clara Adult Education's High Tech Academy.