<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7919202119784428130</id><updated>2011-12-26T23:37:23.171-08:00</updated><category term='annotations'/><category term='selenium'/><title type='text'>Simple Tech Talks</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://simpletechtalks.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7919202119784428130/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://simpletechtalks.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>A Simple Person</name><uri>http://www.blogger.com/profile/11420740554063562757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7919202119784428130.post-1123875348782191076</id><published>2010-10-28T00:50:00.000-07:00</published><updated>2010-10-28T00:50:04.823-07:00</updated><title type='text'>Java - Enum Type Sample usage</title><content type='html'>Recently I got problem where i need to use, the type enum which i never used before,&lt;br /&gt;&lt;br /&gt;The Problem: We have clustered DataBase Setup, So the Automation test should connect to the DataBase server based on some requirement. (Say it has an Activation pair, and DataStorage pairs.)&lt;br /&gt;&lt;br /&gt;So here the typical way is we need to define the connection properties for each pair and connect then accordingly. But when we need to repeat this in a lot of tests, So here the use of the type enum comes.&lt;br /&gt;&lt;br /&gt;Usage:&lt;br /&gt;&lt;br /&gt;1. Define public enum DataBaseServer&lt;br /&gt;2. Define the connection properties&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private String dbDriver ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private String dbServerUrl ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private String userName ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private String password ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private String port;&lt;br /&gt;&lt;br /&gt;3. Now initialize the DataBaseServer based on the Type For example for a primary activation server.&lt;br /&gt;&lt;br /&gt;PRIMARY_ACTIVATION_SERVER("Primary Registry Database Server"){&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public String getDbDriver() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "PrimaryRegistryDBDriver";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public String getDbServerUrl() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "PrimaryRegistryDBUrl";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public String getPort() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "PrimaryRegistryDBPort";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public String getUserName() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "PrimaryRegistryDBUsername";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public String getPassword() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "PrimaryRegistryDBPassword"; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}, SECONDARY_ACTIVATION_SERVER("Primary Registry Database Server"){ //init code here, check the primary code}, &lt;br /&gt;PRIMARY_DATA_SERVER("Primary Registry Database Server"){ //init code here},&lt;br /&gt;SECONDARY_DATA_SERVER("Primary Registry Database Server"){ //init code here} ;&lt;br /&gt;&lt;br /&gt;4. In your data base connection call you can just specify the type like this&lt;br /&gt;&lt;br /&gt;&amp;nbsp; DBConnector.connect(DataBaseServer.PRIMARY_DATA_SERVER);&lt;br /&gt;&lt;br /&gt;note that the connect will accept the DataBaseServer Type and based on it will get the properties..&lt;br /&gt;&lt;br /&gt;-------&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7919202119784428130-1123875348782191076?l=simpletechtalks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpletechtalks.blogspot.com/feeds/1123875348782191076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://simpletechtalks.blogspot.com/2010/10/java-enum-type-sample-usage.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7919202119784428130/posts/default/1123875348782191076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7919202119784428130/posts/default/1123875348782191076'/><link rel='alternate' type='text/html' href='http://simpletechtalks.blogspot.com/2010/10/java-enum-type-sample-usage.html' title='Java - Enum Type Sample usage'/><author><name>A Simple Person</name><uri>http://www.blogger.com/profile/11420740554063562757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7919202119784428130.post-3474817311002260910</id><published>2010-03-10T23:29:00.000-08:00</published><updated>2010-03-10T23:29:01.061-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='annotations'/><title type='text'>Defining and Using Custom Java Annotations</title><content type='html'>When we look in to java annotation &lt;span style="font-family: inherit;"&gt;definition&lt;/span&gt; it will say like this “Annotations provide data about a program that is not part of the program itself or Annotations are java’s way to provide some information to the java compiler”. For example when we look in to @Deprecated annotation, we can see that it says to the compiler that the annotated type is deprecated. That’s fine, great but in reality where I can use my own annotations and what are the scenarios? Recently I came in to a situation where I could see the right use of Custom annotation. When I searched for this it was pretty difficult to find out the right it formation, all tutorials talk about how to write custom annotation and what are the features and syntax but the information I wanted was when to write custom annotation or why do I write a custom annotation. So I just thought of posting one of the most important use of Custom annotation.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The requirement:&lt;/strong&gt; I have a set of classes which are of 2 types, say example “DBUpdate” classes and “DBInsert” Classes. When run time I need to do actions based on which type of class is executing&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solutions:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1. Use a super class and do a type check in run time. But here the issue is both classes are extending&amp;nbsp; from&amp;nbsp;&amp;nbsp; same super class “DataBase.”&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2. Define a marker interface “DataBaseUpdate” and implement this interface for the classes which are doing “DataUpdate”. (This works fine..!!!) But need to define 2 interfaces and should be careful about implementing right Interface etc&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; 3. The alternative solution is define a custom annotation “DataBase” and mark your classes with this. (We will see how to do this”)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;Define the Custom Annotation:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; @Target(ElementType.TYPE)&lt;br /&gt;&amp;nbsp;&amp;nbsp; @Retention(RetentionPolicy.RUNTIME)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public @interface DataBase { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String dbTask() default “”;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;Use @Interface before the annotation name.(dOwe see any relationship between the solution number 2 and the keyword @iInterface!!!!!!) Note that there are 2 other annotations used for defining an Annotation .. :). @Target will define the scope of the annotation (method, class, constructor..etc. Refer Javadoc for all the Target element Types and to know the RetentionPolicy)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;Process the Annotation at Runtime:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Here a method which will process when it found our annotation&lt;br /&gt;&lt;br /&gt;@SuppressWarnings("unchecked")&lt;br /&gt;public static String processAnnotation()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // getting the classes in execution&lt;br /&gt;&amp;nbsp;&amp;nbsp; // getAllClassesInExecution definition is not added here&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Class[] classesInExecution = getAllClassesInExecution(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int i=0; i&amp;lt;classesInExecution.length; i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(classesInExecution[i].isAnnotationPresent(DataBase.class)){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataBase db = classesInExecution[i].getAnnotation(DataBase.class);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String dbTask = db.dbTask();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (dbTask.equalsIgnoreCase(“update”) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Do db update here.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (dbTask.equalsIgnoreCase(“insert”) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Do db&amp;nbsp;isert here.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;Using the Annotation:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Now Use this Annotation at class level. (We used Target(ElementType.TYPE))&lt;br /&gt;&amp;nbsp;&amp;nbsp; @DataBase(dbTask =”update”)&lt;br /&gt;&amp;nbsp;&amp;nbsp; Public class MyDBTest{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;processSQL();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;Now we are ready with our own annotation when the code is executed based on the dbTask we provided the system will do the task accordingly. Now keep defining your custom annotations and start enjoying.&lt;br /&gt;(Don’t forget to refer the performance issues and other things while using the runtime processing)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7919202119784428130-3474817311002260910?l=simpletechtalks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpletechtalks.blogspot.com/feeds/3474817311002260910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://simpletechtalks.blogspot.com/2010/03/defining-and-using-custom-java.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7919202119784428130/posts/default/3474817311002260910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7919202119784428130/posts/default/3474817311002260910'/><link rel='alternate' type='text/html' href='http://simpletechtalks.blogspot.com/2010/03/defining-and-using-custom-java.html' title='Defining and Using Custom Java Annotations'/><author><name>A Simple Person</name><uri>http://www.blogger.com/profile/11420740554063562757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7919202119784428130.post-8719830143518900166</id><published>2010-02-18T00:04:00.000-08:00</published><updated>2010-02-18T00:11:13.765-08:00</updated><title type='text'>Reading a config XML file from Ant Build</title><content type='html'>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Yesterday I was breaking my head to figure out how can I access the properties defined in and XML file. We used to define a config.properies file and access this property file in ANT. But these days writing configuration file in XML is useful we need to communicate with other applications.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I was working on developing a SeleniumTestFrameWork in java, so I defined an XML file "testconfig.xml" to store my properties for the test framework. But for the ANT build to execute the test cases, I need to get the property of the testNG group "testgroup" which is defiend in the testconfig.xml file. Finally I found the solution which as simple as accessing config.properties file in ANT.&lt;br /&gt;&lt;br /&gt;Here the example and sample build file for it.&lt;br /&gt;&lt;br /&gt;Sample XML File: samplconfig.xml&lt;br /&gt;&lt;br /&gt;&amp;lt;root&amp;gt;&lt;br /&gt;&amp;lt;parent1&amp;gt;&lt;br /&gt;&amp;lt;child1&amp;gt;child value &amp;lt;/child1&amp;gt;&lt;br /&gt;&amp;lt;/parent1&amp;gt;&lt;br /&gt;&amp;lt;parent2&amp;gt;parent2 value&amp;lt;/parent2&amp;gt;&lt;br /&gt;&amp;lt;parent3&amp;gt;parent3 value&amp;lt;/parent3&amp;gt;&lt;br /&gt;&amp;lt;root&amp;gt;&lt;br /&gt;&lt;br /&gt;Now Here the ANT Build is,&lt;br /&gt;&lt;br /&gt;&amp;lt;project basedir="." name="XML Property Test"&amp;gt;&lt;br /&gt;&amp;lt;xmlproperty collapseattributes="true" file="${basedir}/config/samplconfig.xml"&amp;gt;&lt;br /&gt;&amp;lt;target name="Sample xml properties"&amp;gt;&lt;br /&gt;&amp;lt;echo&amp;gt;Parent2 Value is: ${root.parent2} &amp;lt;/echo&amp;gt;&lt;br /&gt;&amp;lt;echo&amp;gt;chile1 Value is: ${root.parent1.child1} &amp;lt;/echo&amp;gt;&lt;br /&gt;&amp;lt;/target&amp;gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;br /&gt;&lt;br /&gt;When you run the build the output will be like this...&lt;br /&gt;&lt;br /&gt;Buildfile: E:\workspace\mytest\build.xml&lt;br /&gt;Sample xml properties:&lt;br /&gt;[echo] Parent2 Value is: Parent2 value &lt;br /&gt;BUILD SUCCESSFUL&lt;br /&gt;Total time: 141 milliseconds&lt;br /&gt;&lt;br /&gt;Now start defining your property files as XMLs, and start enjoying.... :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7919202119784428130-8719830143518900166?l=simpletechtalks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpletechtalks.blogspot.com/feeds/8719830143518900166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://simpletechtalks.blogspot.com/2010/02/reading-config-xml-file-from-ant-build.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7919202119784428130/posts/default/8719830143518900166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7919202119784428130/posts/default/8719830143518900166'/><link rel='alternate' type='text/html' href='http://simpletechtalks.blogspot.com/2010/02/reading-config-xml-file-from-ant-build.html' title='Reading a config XML file from Ant Build'/><author><name>A Simple Person</name><uri>http://www.blogger.com/profile/11420740554063562757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7919202119784428130.post-5610251233817307287</id><published>2009-10-20T00:25:00.000-07:00</published><updated>2009-10-20T02:17:02.454-07:00</updated><title type='text'>Part  7: Beginners How to Start With??</title><content type='html'>If you are new to selenium and going through these posts you will be thinking Selenium RC is good and powerful and I am proficeient in my favourite programming language so I should start with Selenium RC. But the answer is NO, you should start with SElenium IDE to know about the selenium Commands and actions.&lt;br /&gt;&lt;br /&gt;1. Download Selenium IDE using Firefox (Tools--&gt;Add-ons)&lt;br /&gt;2. After doing that click on Tools you will see Selenium IDE there.&lt;br /&gt;3. Click on Selenium IDE &lt;br /&gt;4. ByDefault selenium IDE with open with HTML as format.&lt;br /&gt;5. If you want to chnage the format go to Options--&gt;Format and choose the format you want.&lt;br /&gt;6. Now click on File --&gt; New Test Case whcih effectively create a new test case, click on the record button from the toolbar (right most)&lt;br /&gt;7. Enter the base url of your application in the Base URL TextField. Do soem actions on the application under test and you can see that the selenium IDE records the action you do.&lt;br /&gt;8. Now click on the "play current test case button" and verify that the test executed currectly.&lt;br /&gt;9. We can view the log in the lower pane of the Selenium IDE window.&lt;br /&gt;10. Now you can save the test and re-open and run it again.&lt;br /&gt;&lt;br /&gt;(Seleniums wait methods wait for pre-defined milli seconds bydefault it will be "30000" you can change this by going to Options--&gt;options--&gt;Default value for recorded command)&lt;br /&gt;&lt;br /&gt;More importantly give special attention to the middle pane of the selenium IDE window. Where we will see the Command, Target and Value&lt;br /&gt;&lt;br /&gt;Command is the Selenium Command/Method to be executed&lt;br /&gt;Target is on what field command should be executed (Target is nothing but locator)&lt;br /&gt;Value is the input value of the field (for Text, DropDown, etc)&lt;br /&gt;&lt;br /&gt;So to get good control over selenium you should check the auto help option from Command Filed" Type any character in the command Field Selenium IDE will list the commands starts with that character. Now select any of the listed command, If you look at the bottom pane we can see that the pane is changed to References and it displays the description the selected Command.&lt;br /&gt;&lt;br /&gt;Work and play with the IDE commands and be ready by yourselves to move to the next level&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7919202119784428130-5610251233817307287?l=simpletechtalks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpletechtalks.blogspot.com/feeds/5610251233817307287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://simpletechtalks.blogspot.com/2009/10/part-7-beginners-how-to-start-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7919202119784428130/posts/default/5610251233817307287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7919202119784428130/posts/default/5610251233817307287'/><link rel='alternate' type='text/html' href='http://simpletechtalks.blogspot.com/2009/10/part-7-beginners-how-to-start-with.html' title='Part  7: Beginners How to Start With??'/><author><name>A Simple Person</name><uri>http://www.blogger.com/profile/11420740554063562757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7919202119784428130.post-4785986888835027248</id><published>2009-10-19T09:34:00.001-07:00</published><updated>2009-10-20T01:15:37.766-07:00</updated><title type='text'>Part 6: Running The Tests</title><content type='html'>Using Selenium IDE&lt;br /&gt;&lt;br /&gt;• We can open the html tests and click on Run Tests button&lt;br /&gt;• To run all the tests we have we need to create test suites. B default selenium looks for TestSuite.html, so we can either add all the html tests to TestSuite.html&lt;br /&gt;•Or we can override the TestRunner url b replacing the TestSuite.html with our own test suite name Ex: http://localhost/TestRunner.html?test=AllTests.html&lt;br /&gt;&lt;br /&gt;Using Selenium RC&lt;br /&gt;&lt;br /&gt;•Running tests using selenium RC is up to the framework developer. The common steps to follow are,&lt;br /&gt;1. Starting the selenium Server&lt;br /&gt;2. Initializing the DefaultSelenium object with the application url, browser and other desired properties.&lt;br /&gt;3. call the start method of selenium object (selenium.start())&lt;br /&gt;4. Starting your test (Either we can make use of any other unit testing frameworks like junit, nunit, testNG etc or can use the programming languages technique but in this case you may loose the flexibility and advantages of a testing framework so nobody does that)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7919202119784428130-4785986888835027248?l=simpletechtalks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpletechtalks.blogspot.com/feeds/4785986888835027248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://simpletechtalks.blogspot.com/2009/10/part-6-running-tests.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7919202119784428130/posts/default/4785986888835027248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7919202119784428130/posts/default/4785986888835027248'/><link rel='alternate' type='text/html' href='http://simpletechtalks.blogspot.com/2009/10/part-6-running-tests.html' title='Part 6: Running The Tests'/><author><name>A Simple Person</name><uri>http://www.blogger.com/profile/11420740554063562757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7919202119784428130.post-4632496687744732396</id><published>2009-10-19T09:30:00.000-07:00</published><updated>2009-10-20T21:26:10.159-07:00</updated><title type='text'>Part 5: Locating the Elements in a Web Page (Object Spying)</title><content type='html'>For testing our web application we need to enter the data and verify the outputs, how we are going to do this. In other words how we are going to identify the web components on the web page. Its known as spying the objects. For example if we need to do an action on a component, all we need is uniquely identify the component. If we have only a button in the page and it has a unique id or name then we are blessed. What if we have so many buttons and all have no id but the same name(Since all are doing the same action but in different situations so the developer decides to give the same name) These kind of situations we need to do something tricky which help us to identify each button uniquely &lt;br /&gt;&lt;br /&gt;Selenium uses the following types to locate the objects on a web page.&lt;br /&gt;&lt;br /&gt;1. &lt;strong&gt;ID or NAME &lt;/strong&gt;Locator(The element with @id, @name attributes which is unique in the page.). &lt;br /&gt;&lt;br /&gt;2. &lt;strong&gt;XPATH Locators&lt;/strong&gt;. &lt;br /&gt;&lt;br /&gt;(Xpath locators are beginning with “//” xpaths are useful when we don't have unique id or name in this case we ma need to use the combination of other attributes like alt, value, class, span etc..)&lt;br /&gt;&lt;br /&gt;3. &lt;strong&gt;DOM Locators &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;(We can use the DOM model to traverse the document and locate the objects. The DOM locators must begin with document Ex: document.acme.forms.loginForm.username)&lt;br /&gt;&lt;br /&gt;4. &lt;strong&gt;CSS Locators&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;CSS locators are like other XPATH locators but here we will make use of CSS attributes. When we started with IE as test browser I used to face so many problems with XPATH locators. The test execution was extremely slow and in few places the way IE translates the Pages was bit different from Firefox which I used to locate elements. So it will be much appreciated if you use CSS locators over XPATHs. It will increase the execution speed in IE and in AJAX rich applications it will reduce the chances of failures by dynamic object id generation&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;For example in our login page we need to test the following scenario. (Note that I will be using java code for samples)&lt;br /&gt;&lt;br /&gt;1. Open the login page&lt;br /&gt;2. Verify the login page opened&lt;br /&gt;3. Type the username&lt;br /&gt;4. Type the password &lt;br /&gt;5. Click on the login button&lt;br /&gt;6. Verify the login is successful&lt;br /&gt;&lt;br /&gt;Here we need to locate 3 elements 1. Username Textfield 2. Password field 3. Login button. We can use the Selenium IDE to record teh actions there b figuring out the locators but if you are more experience ou can find out locators directly from the html source, DOM, or some locator tools.&lt;br /&gt;Ok when we opened the html we could see that the following code&lt;br /&gt;&lt;br /&gt;input id=username value =’Enter username here’ size=10, onKePres= “Do something” &lt;br /&gt;input id=password value =’’ size=10, class= pwd&lt;br /&gt;button id=loginButton value =’’ size=10 name= login &lt;br /&gt;&lt;br /&gt;Here all the 32 elements have ids we can make use of it. Hence our code will be look like this&lt;br /&gt;&lt;br /&gt;Selenium.type(“username”);&lt;br /&gt;Selenium.type(“password”);&lt;br /&gt;Selenium.click(“loginButton”);&lt;br /&gt;Selenium.wait(“60000”);&lt;br /&gt;The same code can use XPATH/DOM like this (Note that I am not showing the DOM or CSS definition for the page all I need is to show the usage or syntax)&lt;br /&gt;Selenium.tpe(“//input[@value=’ ’Enter username here’]”); //XPATH&lt;br /&gt;Selenium.tpe(“css=div[class=pwd]”); //CSS &lt;br /&gt;Selenium.click(“document.LoginForm.loginButton”); //DOM&lt;br /&gt;Tools which helps us to identify the attributes of a field&lt;br /&gt;1. Firebug (Firefox pluggin) (search for firefox addons)&lt;br /&gt;2. IE Developers Toolbar “http://chrispederick.com/work/webdeveloper/”&lt;br /&gt;3. Xpath Checker (Firefox addon)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7919202119784428130-4632496687744732396?l=simpletechtalks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpletechtalks.blogspot.com/feeds/4632496687744732396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://simpletechtalks.blogspot.com/2009/10/part-5-locating-elements-in-web-page.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7919202119784428130/posts/default/4632496687744732396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7919202119784428130/posts/default/4632496687744732396'/><link rel='alternate' type='text/html' href='http://simpletechtalks.blogspot.com/2009/10/part-5-locating-elements-in-web-page.html' title='Part 5: Locating the Elements in a Web Page (Object Spying)'/><author><name>A Simple Person</name><uri>http://www.blogger.com/profile/11420740554063562757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7919202119784428130.post-8364496503292892611</id><published>2009-10-19T09:28:00.000-07:00</published><updated>2009-10-19T23:20:47.880-07:00</updated><title type='text'>Part 4: How Does Selenium work</title><content type='html'>1.Selenium is developed by using JavaScript and implemented with browser technology.&lt;br /&gt;2.Tests run directly in the browser.&lt;br /&gt;3.Selenium deploys its own BrowserBot with our application for this selenium engine uses JavaScript and Iframes.&lt;br /&gt;4.Since Selenium uses Javascript it works with an Java-Script enabled browser.&lt;br /&gt;&lt;br /&gt;The above statements are the technical description of Selenium as A Tool but as a user you ma not need to dig in to how it works or how it developed and all. All you want is how it works for you.&lt;br /&gt;1. Selenium loads our application b the specified url, the command use for this is selenium.open(url)&lt;br /&gt;2.Selenium identifying the elements in the web page under test b using the element locators&lt;br /&gt;3.Selenium does Actions on the web page under test by using the locators and its action methods (type, click, select, check..etc)&lt;br /&gt;4.After the output generated or the resultant page loads (selenium waits for the pageload)Selenium does verifications using assert or verify methods. &lt;br /&gt;5.Accessors (getter methods): After generating the out put we can get and store it.&lt;br /&gt;6.We can refine our tests using other methods like storing values, waiting for a pageload etc. Doing some operations on the output values etc.&lt;br /&gt;&lt;br /&gt;Make use of selenium's auto help from selenium IDE (type the method/Acton name’s first character and refer the description comes along with the method)or use the appropriate drivers documentation to learn more about the methods in selenium (If you are using selenium RC and an of the drivers you will get the DOC for the appropriate drivers.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7919202119784428130-8364496503292892611?l=simpletechtalks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpletechtalks.blogspot.com/feeds/8364496503292892611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://simpletechtalks.blogspot.com/2009/10/part-4-how-does-selenium-work.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7919202119784428130/posts/default/8364496503292892611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7919202119784428130/posts/default/8364496503292892611'/><link rel='alternate' type='text/html' href='http://simpletechtalks.blogspot.com/2009/10/part-4-how-does-selenium-work.html' title='Part 4: How Does Selenium work'/><author><name>A Simple Person</name><uri>http://www.blogger.com/profile/11420740554063562757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7919202119784428130.post-8132646032169443499</id><published>2009-10-19T09:25:00.000-07:00</published><updated>2009-10-19T23:12:21.357-07:00</updated><title type='text'>Part 3: Selenium Flavors (Components)</title><content type='html'>There are 3 types of Selenium Components available in now. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Selenium Core:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;    Selenium Core is the test execution framework for all selenium flavors. &lt;br /&gt;Even though users can use Selenium Core as the testing tool but not encouraged&lt;br /&gt;It is the engine of both, Selenium IDE and Selenium RC&lt;br /&gt;Selenium core is written in DHTML.&lt;br /&gt;Selenium developers it self says that the Selenium Core will be deprecated in recent future, hence I am not at all bothering about Selenium core in any of the topics.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. Selenium IDE&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;    Selenium IDE is a record and playback tool. Selenium IDE is a firfox extension so as I mentioned before this is its biggest limitation. So if you want to run our tests on different browsers you may need to go for Selenium RC. But we can run our tests which has been recorded b IDE in an browser using Selenium RC.&lt;br /&gt;Selenium IDE provides auto complete for all the selenium commands.&lt;br /&gt;Can save the recorded tests in to different supported formats (html, java, rub, etc..)&lt;br /&gt;we can also set debug and break points. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3. Selenium RC (Remote Control)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Selenium Remote Control (RC) allows us to write the tests in any programming language against any HTTP website using any javascript-enabled browser. &lt;br /&gt;Selenium RC has a server which automatically launches and kills browsers, and acts as a HTTP proxy for web requests.&lt;br /&gt;Selenium Client Driver libraries for our favorite computer languages HTML, Java, C#, Perl, PHP, Python, and Ruby..&lt;br /&gt;The RC server also bundles Selenium Core, and automatically loads it into the browser.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4. Selenium-Grid&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;    Grid allows the Selenium-RC test suites that must be run in multiple environments and allows for running tests in parallel&lt;br /&gt;Multiple instances of Selenium-RC are running on various operating systems and browser configurations, each of these when launching register with a selenium hub. When tests are sent to the hub they are then redirected to an available Selenium-RC, which will launch the browser and run the test. This allows for running tests in parallel.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7919202119784428130-8132646032169443499?l=simpletechtalks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpletechtalks.blogspot.com/feeds/8132646032169443499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://simpletechtalks.blogspot.com/2009/10/part-3-selenium-flavors-components.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7919202119784428130/posts/default/8132646032169443499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7919202119784428130/posts/default/8132646032169443499'/><link rel='alternate' type='text/html' href='http://simpletechtalks.blogspot.com/2009/10/part-3-selenium-flavors-components.html' title='Part 3: Selenium Flavors (Components)'/><author><name>A Simple Person</name><uri>http://www.blogger.com/profile/11420740554063562757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7919202119784428130.post-7705122025060165155</id><published>2009-10-19T09:17:00.000-07:00</published><updated>2009-10-19T23:24:11.978-07:00</updated><title type='text'>Part 2: Why Not Selenium</title><content type='html'>When we discuss about a tool if we are not considering the cons then the discussion is not complete. Yes some of the advantages will come as disadvantages. &lt;br /&gt;    1. Open Source Tool difficult to get the right support.&lt;br /&gt;    2. Need to put great effort to design the right framework&lt;br /&gt;    3. Need the right knowledge to design and integrate different tools for the framework (Ex. You may need to integrate with Reporting tools, build, integration, other utils.&lt;br /&gt;    4. Record and Playback only available with FireFox browser&lt;br /&gt;    5. If you are planning to run our tests on multiple browsers then need special care for the object locators (We will discuss about this in the element locators section.)&lt;br /&gt;&lt;br /&gt;Here I was not listing the selenium’s limitations to handle some situations in the application, instead I was listing the disadvantages as a testing tool. We may find some tricky situations where selenium is failing to handle our requests, in such situations its our responsibility to find out the solutions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7919202119784428130-7705122025060165155?l=simpletechtalks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpletechtalks.blogspot.com/feeds/7705122025060165155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://simpletechtalks.blogspot.com/2009/10/part-2-why-not-selenium.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7919202119784428130/posts/default/7705122025060165155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7919202119784428130/posts/default/7705122025060165155'/><link rel='alternate' type='text/html' href='http://simpletechtalks.blogspot.com/2009/10/part-2-why-not-selenium.html' title='Part 2: Why Not Selenium'/><author><name>A Simple Person</name><uri>http://www.blogger.com/profile/11420740554063562757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7919202119784428130.post-5042609667122231433</id><published>2009-10-13T06:57:00.000-07:00</published><updated>2009-10-13T07:05:57.358-07:00</updated><title type='text'>Part 1: Why Selenium</title><content type='html'>Its a simple question arise when you think about selecting your automation tool. The answer is pretty simple.&lt;br /&gt;&lt;br /&gt;1. Its Open sourse!!&lt;br /&gt;2. Its easy to learn and impliment..&lt;br /&gt;3.  Supports multiple browsers.&lt;br /&gt;4. Supports multiple scripting/programming languages.&lt;br /&gt;5. Flexible to your choice, simple record and playback (IDE), Comple Framework design to your choice by using your favorite programming language.&lt;br /&gt;6. Supports parellel execution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7919202119784428130-5042609667122231433?l=simpletechtalks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpletechtalks.blogspot.com/feeds/5042609667122231433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://simpletechtalks.blogspot.com/2009/10/part-1-why-selenium.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7919202119784428130/posts/default/5042609667122231433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7919202119784428130/posts/default/5042609667122231433'/><link rel='alternate' type='text/html' href='http://simpletechtalks.blogspot.com/2009/10/part-1-why-selenium.html' title='Part 1: Why Selenium'/><author><name>A Simple Person</name><uri>http://www.blogger.com/profile/11420740554063562757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7919202119784428130.post-3587932086673685730</id><published>2009-10-13T03:56:00.000-07:00</published><updated>2009-10-13T06:53:55.630-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='selenium'/><title type='text'>Automating the Web Application With Selenium.</title><content type='html'>I was thinking to share my knowledge about selenium from the day I started working with it. I like the tool with all of its strengths and limitations. Is an excellent tool currently available in the open source testing tools world to test your web application. If you are just in development phase of your project and you are planning to automate your tests using selenium just take a precaution from the development side; put a unique identifier for your javascript objects as much as possible...&lt;br /&gt;&lt;br /&gt;In the following sections I will share my knowledge as much as possible, when I started with selenium 2 years back there where no such tutorials or tips were not available.. But now you can find out a lot of documents and tutorials available over Internet. The selenium document ion itself is pretty described and well documented now. I refereed the document recently after long time I surprised with the content and the excelled way of describing the features and techniques in fact one moment I thought of not to write this posts. Anyways it was a though which I had from past two years so y do I stop? OK I will continue with my decision...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7919202119784428130-3587932086673685730?l=simpletechtalks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpletechtalks.blogspot.com/feeds/3587932086673685730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://simpletechtalks.blogspot.com/2009/10/automating-web-application-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7919202119784428130/posts/default/3587932086673685730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7919202119784428130/posts/default/3587932086673685730'/><link rel='alternate' type='text/html' href='http://simpletechtalks.blogspot.com/2009/10/automating-web-application-with.html' title='Automating the Web Application With Selenium.'/><author><name>A Simple Person</name><uri>http://www.blogger.com/profile/11420740554063562757</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
