WatiN, an automation web testing tool
Fabian Piau | Wednesday June 10th, 2009 - 10:28 AMA few days ago, I discovered a kind of tools that enables you to test web applications.
WatiN (pronounced as what-in) is a .NET GUI automation framework.
By using WatiN and programming a little, you only need to execute a program and be able to surf the internet without having to surf! You got it? No? Let’s go for some explanations.
Why don’t you “automate” your everyday life? Things you often do when you surf the internet.
This software reproduces, word for word, the workflow you have programmed. Automated actions are various: click on a button, select a value in a list, capture a screenshot, save the page and so on.
The programming language is C#. If you are already familiar with Java programming, C# would be easy to understand.
I am not Microsoft addict and I am used to Eclipse but I have to admit that Microsoft Visual Studio is a great IDE. After 2 or 3 days, you get used to it and create good automation scenarios.
Technically, to “find” these buttons, lists and other HTML elements, WatiN navigates in the HTML DOM tree structure of web pages (in other words, the tags).
WatiN can interact with a lot of HTML elements (see the HTML mapping list).
WatiN identifies elements by their id, name, class, text, url, value, style… depending on your code.
To understand, the following is our first example:
public void login() { // Open a new Internet Explorer Window and // goto a secured website ie = new IE('http://www.my-secured-website.com/login.php'); // Find the user name text field and type 'toto' in it ie.TextField(Find.ByName('username')).TypeText('toto'); // Find the password text field and type 'titi' in it ie.TextField(Find.ByName('password')).TypeText('titi'); // Select the database ie.SelectList(Find.ByName('userDb')).SelectByValue('db2'); // Click on the login button to connect ie.Button('loginId').Click(); }
This funtion automates the connection to a web application.
And here is the HTML code of the tested page (login.php):
<html> <head> </head> <body> <table> <tr> <td width='100'>User Name</td> <td> <input value='' maxlength='50' name='username' type='text'> </td> </tr> <tr> <td>Password</td> <td> <input maxlength='50' name='password' type='password'> </td> </tr> <tr> <td>Database</td> <td> <select name='userDb'> <option selected value='#'>Select a database</option> <option value='db1'>DataBase 1</option> <option value='db2'>DataBase 2</option> <option value='db3'>DataBase 3</option> <option value='db4'>DataBase 4</option> </select> </td> </tr> <tr height='30'><td></td></tr> <tr> <td> <input name='login' id='loginId' type='button' value='Login'> </td> </tr> </table> </body> </html>
What’s happening during the execution?
WatiN opens Internet Explorer, goes to the specified URL, looks for the text field named “username” and types “toto” in it. It does the same thing for the password.
Then, it selects a database in the list named “userDb” and finally, submits the form by clicking on the button identified by “loginId”.
At this point, WatiN is going to select the database and connect the user.
WatiN colors the current element it interacts with (that’s the yellow flashing).
In this example, Internet Explorer (ie) is used but WatiN supports also Firefox.
You can use the WatiN Test Recorder tool to generate code compatible with WatiN.
Perhaps, you will need to slightly modify the generated code for some optimizations, but this is really a good starting point.
A second example: a Google search (3 lines of code needed)
// Open an new Internet Explorer Window and // goto the google website IE ie = new IE('http://www.google.com'); // Find the search text field and type 'how to use watin' in it ie.TextField(Find.ByName('q')).TypeText('how to use watin'); // Click on the Google search button ie.Button(Find.ByName('btnG')).Click();
Example stops here, but we can imagine a processing of the results.
Recent Comments