<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.theautomatedtester.co.uk/~d/styles/itemcontent.css"?><rss xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
								  <channel>
								    <title>The Automated Tester</title>
								    <link>http://www.theautomatedtester.co.uk/</link>
								    <description>The Automated Tester - Explaining how the real world works!</description>
								    <pubDate>Wed, 04 Aug 2010 21:56:31 GMT</pubDate>
								<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.theautomatedtester.co.uk/TheAutomatedTester" /><feedburner:info uri="theautomatedtester" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-sa/3.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.theautomatedtester.co.uk%2FTheAutomatedTester" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.theautomatedtester.co.uk%2FTheAutomatedTester" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.theautomatedtester.co.uk%2FTheAutomatedTester" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.theautomatedtester.co.uk/TheAutomatedTester" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.theautomatedtester.co.uk%2FTheAutomatedTester" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.theautomatedtester.co.uk%2FTheAutomatedTester" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.theautomatedtester.co.uk%2FTheAutomatedTester" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.theautomatedtester.co.uk%2FTheAutomatedTester" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:browserFriendly>Thank you for subscribing to my syndication. This syndication will be be updated frequently with Selenium Tutorials and other testing news.</feedburner:browserFriendly><item>
									<title>Automating the Capture of Web Timings with Selenium 2</title>
									<link>http://feeds.theautomatedtester.co.uk/~r/TheAutomatedTester/~3/XtKeW8bEWFo/selenium-webtimings-api.html</link>
									<description>&lt;p&gt;Measuring the speed of how long a page takes to load is becoming one of the most important metrics that
we as software developers or testers can measure. This is because milliseconds can mean the difference between 
a sale being paid for or abandoned. A couple of years ago Amazon did research that showed for every 100ms slower 
the page was in loading they lost 1% of sales.
&lt;/p&gt;
&lt;p&gt;The downside to all of this is that we, as developers, testers and even ops, can only control the speed of things 
within our code and within our datacenters. With this in mind we should be trying to record all of the information
that we can from within the browser. Last year at GTAC 2009 (&lt;a href='http://www.youtube.com/watch?v=qQgDDAan4rM'&gt;
presentation video&lt;/a&gt;) David Henderson and I discussed how we used YSlow and Selenium to record page metrics and load
times of the web application. We made the total primed page size decrease by 85% with the work we did. 
&lt;/p&gt;
&lt;p&gt;
The unfortunate thing about the way we did this was that we had to hack YSlow because it didn't give us all the information
 that we wanted. We also needed to hack Selenium because it blocked a few of the headers to do with element expiry. This
 is not really ideal but with the new &lt;a href='http://dev.w3.org/2006/webapi/WebTiming/'&gt;Web Timings API&lt;/a&gt; we are starting 
 to be able to do all of this with just a bit of JavaScript.
&lt;/p&gt;
&lt;p&gt;
To access this we need to get hold of the performance object and then get it to return a dictionary of all the timing data. 
The values that are returned are milliseconds from 1/1/1970. They give you all cool bits of information like how long it
takes to unload a page you're on before navigating to the new page and how long that takes to load. It also tells you how long 
domain lookups take and how long redirects take. These are all neat tidbits of information when performance tuning your web application.
&lt;/p&gt;
&lt;p&gt;
So below is a C# extension method that I have created that extends the WebDriver object to collect the information for you. Not all 
browsers support this at the moment but as web timings becomes the standard the code will start returning data. Current browsers that 
support this are Chrome 6 and IE9 pre3. A patch has been submitted to Mozilla for Firefox 4 so hopefully this will be applied soon.
&lt;br /&gt;
&lt;pre class="brush: csharp"&gt; 
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using OpenQA.Selenium;

namespace AutomatedTester.PagePerf
{
    public static class Extensions
    {
        public static Dictionary&amp;lt;string,object&amp;gt; WebTimings(this IWebDriver driver)
        {
            var webTiming = (Dictionary&amp;lt;string, object&amp;gt;)((IJavaScriptExecutor)driver)
                .ExecuteScript(@"var performance = window.performance || window.webkitPerformance || window.mozPerformance || window.msPerformance || {};
                                 var timings = performance.timing || {};
                                 return timings;");
			/* The dictionary returned will contain something like the following.
             * The values are in milliseconds since 1/1/1970
             * 
             * connectEnd: 1280867925716
             * connectStart: 1280867925687
             * domainLookupEnd: 1280867925687
             * domainLookupStart: 1280867925687
             * fetchStart: 1280867925685
             * legacyNavigationStart: 1280867926028
             * loadEventEnd: 1280867926262
             * loadEventStart: 1280867926155
             * navigationStart: 1280867925685
             * redirectEnd: 0
             * redirectStart: 0
             * requestEnd: 1280867925716
             * requestStart: 1280867925716
             * responseEnd: 1280867925940
             * responseStart: 1280867925919
             * unloadEventEnd: 1280867925940
             */ 
            return webTiming;
        }
    }
}
&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tY9qz1fmOy6Nzh8-1sss2ZDdox8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tY9qz1fmOy6Nzh8-1sss2ZDdox8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tY9qz1fmOy6Nzh8-1sss2ZDdox8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tY9qz1fmOy6Nzh8-1sss2ZDdox8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=XtKeW8bEWFo:SvWK08Sm9UM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=XtKeW8bEWFo:SvWK08Sm9UM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=XtKeW8bEWFo:SvWK08Sm9UM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=XtKeW8bEWFo:SvWK08Sm9UM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=XtKeW8bEWFo:SvWK08Sm9UM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=XtKeW8bEWFo:SvWK08Sm9UM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=XtKeW8bEWFo:SvWK08Sm9UM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=XtKeW8bEWFo:SvWK08Sm9UM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=XtKeW8bEWFo:SvWK08Sm9UM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=XtKeW8bEWFo:SvWK08Sm9UM:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=XtKeW8bEWFo:SvWK08Sm9UM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=XtKeW8bEWFo:SvWK08Sm9UM:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=XtKeW8bEWFo:SvWK08Sm9UM:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=XtKeW8bEWFo:SvWK08Sm9UM:s7a4DPEPgWk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=XtKeW8bEWFo:SvWK08Sm9UM:s7a4DPEPgWk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheAutomatedTester/~4/XtKeW8bEWFo" height="1" width="1"/&gt;</description>
								  <feedburner:origLink>http://www.theautomatedtester.co.uk/blog/2010/selenium-webtimings-api.html</feedburner:origLink></item>
								  	<item>
									<title>Selenium StackExchange Commitment</title>
									<link>http://feeds.theautomatedtester.co.uk/~r/TheAutomatedTester/~3/twNZ3ZG9An0/selenium-stackexchange-commitment.htm</link>
									<description>&lt;p&gt;First let me start by thanking those who followed the &lt;a href='http://www.theautomatedtester.co.uk/blog/2010/selenium-stackexchange-proposal.htm'&gt;Selenium StackExchange Proposal&lt;/a&gt;. We managed to meet all the criteria that was set by the StackExchange Team and have moved onto the second stage.&lt;/p&gt;
&lt;p&gt;The second stage is the commitment stage. This is where we get people to commit that they are going to use it to ask questions or answer questions when they are put on the site. This is a very important stage because it shows how strong the Selenium Community is and in my opinion we do have a strong community. Unfortunately, my opinion doesn't matter that much in the StackExchange process so if you haven't committed to the &lt;a href='http://area51.stackexchange.com/proposals/4693/selenium?referrer=x_7o-7qxP1fWgagw76fBpg2'&gt;Selenium StackExchange Site&lt;/a&gt; please click on the link and commit.
&lt;/p&gt;
&lt;p&gt;You never know when you may need an answer to a question that may already have been asked and it's easy available to you with the new &lt;a href='http://area51.stackexchange.com/proposals/4693/selenium?referrer=x_7o-7qxP1fWgagw76fBpg2'&gt;site&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/U3s3WfgcAHRT-DO8MsuOohqNBGw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/U3s3WfgcAHRT-DO8MsuOohqNBGw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/U3s3WfgcAHRT-DO8MsuOohqNBGw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/U3s3WfgcAHRT-DO8MsuOohqNBGw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=twNZ3ZG9An0:eEUtm8-B56M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=twNZ3ZG9An0:eEUtm8-B56M:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=twNZ3ZG9An0:eEUtm8-B56M:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=twNZ3ZG9An0:eEUtm8-B56M:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=twNZ3ZG9An0:eEUtm8-B56M:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=twNZ3ZG9An0:eEUtm8-B56M:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=twNZ3ZG9An0:eEUtm8-B56M:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=twNZ3ZG9An0:eEUtm8-B56M:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=twNZ3ZG9An0:eEUtm8-B56M:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=twNZ3ZG9An0:eEUtm8-B56M:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=twNZ3ZG9An0:eEUtm8-B56M:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=twNZ3ZG9An0:eEUtm8-B56M:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=twNZ3ZG9An0:eEUtm8-B56M:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=twNZ3ZG9An0:eEUtm8-B56M:s7a4DPEPgWk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=twNZ3ZG9An0:eEUtm8-B56M:s7a4DPEPgWk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheAutomatedTester/~4/twNZ3ZG9An0" height="1" width="1"/&gt;</description>
								  <feedburner:origLink>http://www.theautomatedtester.co.uk/blog/2010/selenium-stackexchange-commitment.htm</feedburner:origLink></item>
								  	<item>
									<title>Writing maintainable tests</title>
									<link>http://feeds.theautomatedtester.co.uk/~r/TheAutomatedTester/~3/XhI6_P_5pz8/writing-maintainable-tests.htm</link>
									<description>&lt;p&gt;
A question I get asked regularly, and is regularly asked on forums I visit, is how do "I make my tests maintainable?". 
This is normally from a tester upset that the developers are commenting out tests because they feel its too much work to update the tests.
 The next popular question is "how can I get my non-technical colleagues creating automated tests?". For me the answer to both is very similar. 
 Make the tests self-documenting and easy to read (maybe using a DSL). You, as a developer, would do this with your production code so why not do it with your tests.
&lt;/p&gt;
&lt;p&gt;
Now, what do I mean by self-documenting and easy to read? 
&lt;ul&gt;
	&lt;li&gt;Methods should explain what they are for. This goes for test and production.&lt;br/&gt;
	I like to format my test methods like ShouldDoX. This is similar to what BDD practioners do for their tests. 
	If another prerson comes along to look at some code that you have written, and your tests,
	 they will be able to see what you meant it to be doing. 
	 &lt;pre class="brush: csharp"&gt;
	 public void ShouldLoginAndChangeStatus() 
	 &lt;/pre&gt;
	 for a social networking app explains exactly what they are expecting.
	&lt;/li&gt;
	&lt;li&gt;Methods and tests should be succinct&lt;br/&gt;
	Methods that are huge, in test and production, are likely to have bugs in them because people have to
	scroll to get to the bottom. They are likely to have business logic bugs when that happens. I also like abstract
	as much as I can so that it makes the code readable.
	&lt;br/&gt;&lt;br/&gt;
	&lt;u&gt;Which is better for readability?&lt;/u&gt;&lt;br/&gt;
	&lt;pre class="brush: csharp"&gt;
	selenium.click("//a[contains(@blah,'someIdButNotAllOfIt)]")
	&lt;/pre&gt;
	&lt;br/&gt;
	or&lt;br/&gt;
	&lt;pre class="brush: csharp"&gt;
	// linkToCoolStuff is a constant holding the XPath above
	selenium.click(linkToCoolStuff)
	&lt;/pre&gt;
	&lt;/li&gt;
	&lt;li&gt;
	Maybe using a DSL?	&lt;br/&gt;
	We could take this one step further and create a DSL so that we do not have to care how it does it, we just know it will happen. 
	For UI testing I like the idea of the Page Object design pattern for creating tests. 
	You split the UI and the tests apart so that you can have a test looks like the following. &lt;br/&gt;
	&lt;pre class="brush: csharp"&gt;
    [Test]
    public void ShouldLoadHomeThenGoToXpathTutorial()
    {
        Home home = new Home(selenium);
        SeleniumTutorials seleniumTutorials = home.ClickSelenium();
        SeleniumXPathTutorial seleniumXPathTutorial = seleniumTutorials.ClickXpathTutorial();
        Assert.True(seleniumXPathTutorial.
					IsInputOnScreen(SeleniumXPathTutorial.FirstInput));
        Assert.True(seleniumXPathTutorial
					.IsInputOnScreen(SeleniumXPathTutorial.SecondInput));
        Assert.True(seleniumXPathTutorial
					.IsInputOnScreen(SeleniumXPathTutorial.Total));
    }
    &lt;/pre&gt;
    &lt;/li&gt;
&lt;/ul&gt;	
&lt;/p&gt;
&lt;p&gt;
I have created a tutorial on how to use the &lt;a href='/tutorials/selenium/page-object-pattern.htm'&gt;Page Object Pattern with Selenium&lt;/a&gt;
 to make tests that are extremely maintainable and also allows non-technical people to write tests without having to understand how Selenium works.
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/UdXlueA4AbsijozIR5udD6ua5XM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UdXlueA4AbsijozIR5udD6ua5XM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/UdXlueA4AbsijozIR5udD6ua5XM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UdXlueA4AbsijozIR5udD6ua5XM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=XhI6_P_5pz8:0yHkmjHdzKk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=XhI6_P_5pz8:0yHkmjHdzKk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=XhI6_P_5pz8:0yHkmjHdzKk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=XhI6_P_5pz8:0yHkmjHdzKk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=XhI6_P_5pz8:0yHkmjHdzKk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=XhI6_P_5pz8:0yHkmjHdzKk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=XhI6_P_5pz8:0yHkmjHdzKk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=XhI6_P_5pz8:0yHkmjHdzKk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=XhI6_P_5pz8:0yHkmjHdzKk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=XhI6_P_5pz8:0yHkmjHdzKk:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=XhI6_P_5pz8:0yHkmjHdzKk:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=XhI6_P_5pz8:0yHkmjHdzKk:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=XhI6_P_5pz8:0yHkmjHdzKk:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=XhI6_P_5pz8:0yHkmjHdzKk:s7a4DPEPgWk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=XhI6_P_5pz8:0yHkmjHdzKk:s7a4DPEPgWk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheAutomatedTester/~4/XhI6_P_5pz8" height="1" width="1"/&gt;</description>
								  <feedburner:origLink>http://www.theautomatedtester.co.uk/blog/2010/writing-maintainable-tests.htm</feedburner:origLink></item>
								  	<item>
									<title>Selenium Page Object Pattern</title>
									<link>http://feeds.theautomatedtester.co.uk/~r/TheAutomatedTester/~3/bY4dyXP2I1E/page-object-pattern.htm</link>
									<description>&lt;p&gt;In this tutorial we will have a look at how we can apply the Page Object design pattern. 
This is an extremely useful design pattern for UI tests as it abstracts away how we get to different pages or screens.
Page Object design helps us create a DSL for our tests that if something were to change on the page we don't need to change the test, we just need
to update the object that represents the page.&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;A large number of people prefer to write tests in this manner than having to use Selenium IDE. I have to admit that I am one these people. It does require a bit of up front
work but once done non-technical can start writing tests in a easy to use manner and never have to understand how everything holds together.
&lt;p&gt;
The following example is done in C# and requires that you have NUnit and at least Visual Studio Express installed.
&lt;/p&gt;
&lt;p&gt;
In the example below I have created my Page Objects to work against my site.
&lt;ul&gt;
&lt;li&gt;Create a class file for a page. In this case let's start on the Home Page. When this object is instantiated we are going to navigate to that page. From there we &lt;br/&gt;
&lt;pre class="brush: csharp"&gt;
public class Home
{
    private readonly ISelenium _selenium;
    
    /// &lt;summary&gt;
    /// Instantiates a new Home Page object. Pass in the Selenium object created in the test SetUp(). 
    /// When the object in instantiated it will navigate to the root
    /// &lt;/summary&gt;
    /// &lt;param name="selenium"&gt;Selenium Object created in the tests&lt;/param&gt;
    public Home(ISelenium selenium)
    {
        this._selenium = selenium;
        if (!selenium.GetTitle().Contains("home"))
        {
            selenium.Open("/");
        }
    }

    /// &lt;summary&gt;
    /// Navigates to Selenium Tutorials Page. Selenium object wll be passed through
    /// &lt;/summary&gt;
    /// &lt;returns&gt;SeleniumTutorials representing the selenium_training.htm&lt;/returns&gt;
    public SeleniumTutorials ClickSelenium()
    {
        _selenium.Click("link=selenium");
        _selenium.WaitForPageToLoad("30000");
        return new SeleniumTutorials(_selenium);
    }

    /// &lt;summary&gt;
    /// Click on the blog or blog year and then wait for the page to load
    /// &lt;/summary&gt;
    /// &lt;param name="year"&gt;blog or blog year&lt;/param&gt;
    /// &lt;returns&gt;Object representing /blog.* pages&lt;/returns&gt;
    public Blog ClickBlogYear(string year)
    {
        _selenium.Click("link=" + year);
        _selenium.WaitForPageToLoad("30000");
        return new Blog(_selenium);
    }
    // Add more methods as you need them
}
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
Let's create another object that will represent one of the tutorials on the site&lt;br /&gt;
&lt;pre class="brush: csharp"&gt;
public class SeleniumXPathTutorial
{
    private readonly ISelenium _selenium;

    public const string FirstInput = "number1";
    public const string SecondInput = "number2";
    public const string Total = "total";

    public SeleniumXPathTutorial(ISelenium selenium)
    {
        this._selenium = selenium;
    }

    public bool IsInputOnScreen(string locator)
    {
        return _selenium.IsElementPresent(locator);
    }
}
&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Let us now create a test class that will hold all of the tests. We will need to create an object for each of the pages and then use the methods in them our tests. 
As we can see from the code below, the Selenium parts have been kept to a minimum. In actual fact the only bit that shows Selenium is in the Setup() and Teardown() methods.&lt;br/&gt;
&lt;pre class="brush: csharp"&gt;
[TestFixture]
public class SiteTests
{
    private ISelenium selenium;
    [SetUp]
    public void Setup()
    {
        selenium = new DefaultSelenium("localhost", 4444, "*chrome", "http://www.theautomatedtester.co.uk");
        selenium.Start();
    }

    [TearDown]
    public void Teardown()
    {
        selenium.Stop();
    }

    [Test]
    public void ShouldLoadHomeThenGoToXpathTutorial()
    {
        Home home = new Home(selenium);
        SeleniumTutorials seleniumTutorials = home.ClickSelenium();
        SeleniumXPathTutorial seleniumXPathTutorial = seleniumTutorials.ClickXpathTutorial();
        Assert.True(seleniumXPathTutorial.
					IsInputOnScreen(SeleniumXPathTutorial.FirstInput));
        Assert.True(seleniumXPathTutorial
					.IsInputOnScreen(SeleniumXPathTutorial.SecondInput));
        Assert.True(seleniumXPathTutorial
					.IsInputOnScreen(SeleniumXPathTutorial.Total));
    }
}
&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Now try make a few more tests to try work against the other pages in the site. If you find that you are repeating yourself in the classes split that out again. If you follow
DRY (Don't Repeat Yourself) then you will have a set of tests that are extremely maintainable.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;By using the Page Object you can make your tests really easy to write and when things change, as they invariably do, you can go from a number of tests 
failing to suddenly passing with making one change. We have followed good practise in keeping the test code (the asserts) inside the test and not in the page objects.	
You can also swap out Selenium 1 and put Selenium 2 in its place and not touch the tests.
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RR7uiAFgFkn448UCqNpnzSgPsMA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RR7uiAFgFkn448UCqNpnzSgPsMA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RR7uiAFgFkn448UCqNpnzSgPsMA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RR7uiAFgFkn448UCqNpnzSgPsMA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=bY4dyXP2I1E:WcMGJfQ6HWw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=bY4dyXP2I1E:WcMGJfQ6HWw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=bY4dyXP2I1E:WcMGJfQ6HWw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=bY4dyXP2I1E:WcMGJfQ6HWw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=bY4dyXP2I1E:WcMGJfQ6HWw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=bY4dyXP2I1E:WcMGJfQ6HWw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=bY4dyXP2I1E:WcMGJfQ6HWw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=bY4dyXP2I1E:WcMGJfQ6HWw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=bY4dyXP2I1E:WcMGJfQ6HWw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=bY4dyXP2I1E:WcMGJfQ6HWw:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=bY4dyXP2I1E:WcMGJfQ6HWw:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=bY4dyXP2I1E:WcMGJfQ6HWw:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=bY4dyXP2I1E:WcMGJfQ6HWw:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=bY4dyXP2I1E:WcMGJfQ6HWw:s7a4DPEPgWk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=bY4dyXP2I1E:WcMGJfQ6HWw:s7a4DPEPgWk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheAutomatedTester/~4/bY4dyXP2I1E" height="1" width="1"/&gt;</description>
								  <feedburner:origLink>http://www.theautomatedtester.co.uk/tutorials/selenium/page-object-pattern.htm</feedburner:origLink></item>
								  	<item>
									<title>Selenium StackExchange Proposal</title>
									<link>http://feeds.theautomatedtester.co.uk/~r/TheAutomatedTester/~3/Oc28ckWmZbc/selenium-stackexchange-proposal.htm</link>
									<description>&lt;p&gt;A while ago Dave Hunt, a Selenium Contributor and London Selenium User Group organiser, suggested that perhaps we should have a look at creating a StackExchange site for Selenium. He suggested it after the StackOverflow team announced &lt;a href='http://blog.stackoverflow.com/2010/04/changes-to-stack-exchange/'&gt;changes to StackExchange&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
On Wednesday Dave created our &lt;a href='http://area51.stackexchange.com/proposals/4693/selenium'&gt;proposal&lt;/a&gt; so that we can get the ball rolling. I have signed up and want to help this proposal as much as I can. There are a couple reasons why I am advocating this so much.
&lt;ul&gt;
&lt;li&gt;Its a lot friendlier to use than &lt;a href='http://groups.google.com/group/selenium-users'&gt;Google groups&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;It will show up possible duplicates in questions. Chances are that if you are having an issue, someone else has had that issue before&lt;/li&gt;
&lt;li&gt;It's like a game! It's points based so people will try get the most points that they can.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
So what can you as a reader of this blog do? Well, if you are a Selenium User I suggest following to the &lt;a href='http://area51.stackexchange.com/proposals/4693/selenium'&gt;proposal&lt;/a&gt; by logging into Area51 and clicking the follow button. The next thing to do is add some example questions if they aren't there. The more example questions the better as it will give people a better idea of what the StackExchange will be used for. Finally, start voting on the example questions. You do this by clicking on one three links on the left of the question as shown in the image below.&lt;/p&gt;
&lt;p&gt;&lt;img src='/externals/stackexchange_voting.png' alt='StackExchange Voting'&gt;&lt;/p&gt;
&lt;p&gt;I have benefitted from using the StackOverflow type sites(StackOverflow, ServerFault, etc) since their launch and I think that as a community we can all benefit from this site so please help the cause&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3y6K2LDAbTi7GijuY8z9_Fg-9is/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3y6K2LDAbTi7GijuY8z9_Fg-9is/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3y6K2LDAbTi7GijuY8z9_Fg-9is/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3y6K2LDAbTi7GijuY8z9_Fg-9is/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=Oc28ckWmZbc:2YZLYnOhL0Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=Oc28ckWmZbc:2YZLYnOhL0Q:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=Oc28ckWmZbc:2YZLYnOhL0Q:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=Oc28ckWmZbc:2YZLYnOhL0Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=Oc28ckWmZbc:2YZLYnOhL0Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=Oc28ckWmZbc:2YZLYnOhL0Q:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=Oc28ckWmZbc:2YZLYnOhL0Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=Oc28ckWmZbc:2YZLYnOhL0Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=Oc28ckWmZbc:2YZLYnOhL0Q:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=Oc28ckWmZbc:2YZLYnOhL0Q:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=Oc28ckWmZbc:2YZLYnOhL0Q:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=Oc28ckWmZbc:2YZLYnOhL0Q:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=Oc28ckWmZbc:2YZLYnOhL0Q:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=Oc28ckWmZbc:2YZLYnOhL0Q:s7a4DPEPgWk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=Oc28ckWmZbc:2YZLYnOhL0Q:s7a4DPEPgWk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheAutomatedTester/~4/Oc28ckWmZbc" height="1" width="1"/&gt;</description>
								  <feedburner:origLink>http://www.theautomatedtester.co.uk/blog/2010/selenium-stackexchange-proposal.htm</feedburner:origLink></item>
								  	<item>
									<title>What is your Label? Male, Female or IT Professional?</title>
									<link>http://feeds.theautomatedtester.co.uk/~r/TheAutomatedTester/~3/hnlYGf2IlvY/diversity-of-skills-rather-than-sex.html</link>
									<description>&lt;p&gt;This morning I work up this morning thinking that today was going to be a really good day. The sun was shining and it was really warm. The thoughts going through my head was "I need coffee then check my emails then phone my friend Chris and see if he wants to cycle over to the Isle of Purbeck today"
&lt;/p&gt;
&lt;p&gt;I did all of those things quite successfully and then thought, lets have a look at what is happening on twitter. This was both a good idea and a bad idea. It was a good idea as I got to see what was happening in the world. The bad idea part was I saw battle of the sexs happening between &lt;a href='http://blog.testyredhead.com'&gt;Lanette Cream&lt;/a&gt; and &lt;a href='http://www.satisfice.com/'&gt;James Bach&lt;/a&gt; about diversity in the industry.
&lt;/p&gt;
&lt;p&gt;This appears to have upset a number of people as their were some negative thoughts from both parties. The main crux of the argument was one was saying we need to encourage diversity and the other saying thats not true.
&lt;/p&gt;
&lt;p&gt;For me I think we need to encourage individuality. I grew up in South Africa and have seen the aftermath of Apartheid and have been victim to affirmative action. Affirmative Action was the main reason why I decided to move to the UK after university. Filling positions to meet quotas is always going to do more harm than good. There were stories, don't know how true, of secretaries becoming directors of companies in South Africa so that the "balance" was corrected.
&lt;/p&gt;
&lt;p&gt;This idea makes me mad! Everyone should get to somewhere on their own merits and driving forward this idea that we need to get more woman into IT is going to do more harm. We need to get more people in general into the industry. This shouldn't matter if they are male, female, pink, green or indifferent. Over the last decade there has been a drop in graduates for maths and science degrees. There are fewer Computer Scientists, engineers and mathematicians. We should be driving that forward and hopefully that will organically get people from diverse backgrounds into our industry.
&lt;/p&gt;
&lt;p&gt;
I had a brief discussion over twitter with &lt;a href='http://www.developsense.com/'&gt;Michael Bolton&lt;/a&gt; where we seemed to agree that we need to have different perspectives on applications when we test. This does comes from hiring different sexs and races but that doesn't guarantee anything. People who go to similar schools will have similar perspectives on things. Being from South Africa I had people of different races and ethnicities in my classes but we all have similar perspectives. This alone makes me hate the diversity argument on sex/race.
&lt;/p&gt;
&lt;p&gt;
I am an IT professional so treat me like one!
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/iH6bBuSiwvP4GNNCkMgfywuZ3mQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iH6bBuSiwvP4GNNCkMgfywuZ3mQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/iH6bBuSiwvP4GNNCkMgfywuZ3mQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iH6bBuSiwvP4GNNCkMgfywuZ3mQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=hnlYGf2IlvY:AUxZuPsozzE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=hnlYGf2IlvY:AUxZuPsozzE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=hnlYGf2IlvY:AUxZuPsozzE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=hnlYGf2IlvY:AUxZuPsozzE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=hnlYGf2IlvY:AUxZuPsozzE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=hnlYGf2IlvY:AUxZuPsozzE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=hnlYGf2IlvY:AUxZuPsozzE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=hnlYGf2IlvY:AUxZuPsozzE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=hnlYGf2IlvY:AUxZuPsozzE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=hnlYGf2IlvY:AUxZuPsozzE:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=hnlYGf2IlvY:AUxZuPsozzE:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=hnlYGf2IlvY:AUxZuPsozzE:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=hnlYGf2IlvY:AUxZuPsozzE:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=hnlYGf2IlvY:AUxZuPsozzE:s7a4DPEPgWk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=hnlYGf2IlvY:AUxZuPsozzE:s7a4DPEPgWk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheAutomatedTester/~4/hnlYGf2IlvY" height="1" width="1"/&gt;</description>
								  <feedburner:origLink>http://www.theautomatedtester.co.uk/blog/2010/diversity-of-skills-rather-than-sex.html</feedburner:origLink></item>
								  	<item>
									<title>The Value of a good bug report</title>
									<link>http://feeds.theautomatedtester.co.uk/~r/TheAutomatedTester/~3/IWO1xvxsp38/The-value-of-a-good-bug-report.html</link>
									<description>&lt;p&gt;I have recently come back from a well deserved holiday in South Africa. Now that I am back I thought that I would carry on working on the .NET Selenium 2 code. I am just about to port the Support project over but thought that I would check that ther weren't any blocking issues that people were experiencing with the .NET Code.
&lt;/p&gt;
&lt;p&gt;So over the last couple days I have been going though the issues that are on Google Code and have been suprised by the quality of the bug reports that people have been submitting. This is from people who spend most of their day writing bug reports or spend their days reading bug reports to fix issues. 
&lt;/p&gt;
&lt;p&gt;The question that I kept asking myself is why do they think this is a good enough bug report? Maybe they have to pay their company per character they type when not on intranet sites? They think that Selenium Developers are psychic? The make certain assumptions like everyone in the world writes tests like them against applications that are exact clones to their application.
&lt;/p&gt;
&lt;p&gt;I am both a developer and a tester so have the unique perspective when looking at bug cases. When I raise a case I make sure that I think about the what is needed for someone, who may not know the system, to fix the issue. This, for me, is an extremely powerful way to raise cases. I always raise my cases with every exact step needed to solve the issues. And if the bug is UI related I will try add a screenshot just in case I may have forgotten something.
&lt;/p&gt;
&lt;p&gt;Marlena Compton says that &lt;a href='http://marlenacompton.com/?p=718'&gt;Being a writer made her a better tester&lt;/a&gt;. I have to agree with that but I think being a developer has made me a better tester too. Being a writer has made me articulate the issue clearly. Being a developer has made me write down what is needed to fix this issue without causing the other person to go grey.
&lt;/p&gt;
&lt;p&gt;Next time you raise a case, think about how you have phrased it!
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Lst7X9GJ9gc1b9RUQkDCaMl2kF4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Lst7X9GJ9gc1b9RUQkDCaMl2kF4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Lst7X9GJ9gc1b9RUQkDCaMl2kF4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Lst7X9GJ9gc1b9RUQkDCaMl2kF4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=IWO1xvxsp38:RsK67h_1o-I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=IWO1xvxsp38:RsK67h_1o-I:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=IWO1xvxsp38:RsK67h_1o-I:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=IWO1xvxsp38:RsK67h_1o-I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=IWO1xvxsp38:RsK67h_1o-I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=IWO1xvxsp38:RsK67h_1o-I:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=IWO1xvxsp38:RsK67h_1o-I:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=IWO1xvxsp38:RsK67h_1o-I:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=IWO1xvxsp38:RsK67h_1o-I:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=IWO1xvxsp38:RsK67h_1o-I:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=IWO1xvxsp38:RsK67h_1o-I:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=IWO1xvxsp38:RsK67h_1o-I:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=IWO1xvxsp38:RsK67h_1o-I:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=IWO1xvxsp38:RsK67h_1o-I:s7a4DPEPgWk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=IWO1xvxsp38:RsK67h_1o-I:s7a4DPEPgWk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheAutomatedTester/~4/IWO1xvxsp38" height="1" width="1"/&gt;</description>
								  <feedburner:origLink>http://www.theautomatedtester.co.uk/blog/2010/The-value-of-a-good-bug-report.html</feedburner:origLink></item>
								  	<item>
									<title>Lights! Camera! Action! Video recording of Selenium</title>
									<link>http://feeds.theautomatedtester.co.uk/~r/TheAutomatedTester/~3/Ow9uRPoUNVo/castro-selenium-video.html</link>
									<description>&lt;p&gt;Last night I was trying to show a client of mine how a Selenium script looks when running on my linux box. My client has an issue that when they run the test the browser just dies. Screen sharing was an option but when we have done this before the screen sharing doesn't show the screen that well. The other issue was trying to get time when we were both free.&lt;/p&gt;

&lt;p&gt;I wanted just a video of what was happening and then I can watch it to see what the issue may be. This way my client could do it in their own time when they have a moment. There are tools out there to record a person's screen. There is camtasia which is really good. Unfortunately I did not want my client to worry about when to start recording and when to stop recording. I wanted a no frills no fuss solution for them. They are not technical in the slightest which is why they hired me.&lt;/p&gt;

&lt;p&gt;My next thought came back to something that Jason Huggins said to me last year at GTAC 2009. Jason had put a small API onto &lt;a href='http://www.unixuser.org/~euske/vnc2swf/pyvnc2swf.html'&gt;pyvnc2swf&lt;/a&gt; and had created &lt;a href='http://github.com/hugs/castro'&gt;Castro&lt;/a&gt;. Castro is a python library that allows users to programmatically record what is happening on the screen and then create a SWF file so you can view it within a web page for everyone to see. This is exactly what I was after since I could write a script for my client to run and that would record the test. I would hopefully be able to then see where the issue may lie. &lt;/p&gt;

&lt;p&gt;It did solve my problem brilliantly and this has become the standard way for me to help my clients. If something isn't working perfectly for them I get them to work through the steps below and then record what the issue could be.&lt;/p&gt;

&lt;p&gt;I have only done this on Ubuntu 9.10, hence the use of apt-get, but it should work on all machines except x64 Windows. This is because Python SetupTools doesn't really work on x64 Windows that well because of the way Windows controls its registry.&lt;/p&gt;

&lt;p&gt;Setup VNCServer :&lt;br /&gt;
System &amp;gt; Preferences &amp;gt; Remote Desktop Prefences&lt;br /&gt;&lt;br /&gt;

Check "Allow others to view your desktop
&lt;/p&gt;
&lt;p&gt;In a terminal window run the follow:&lt;br /&gt;&lt;br /&gt;

sudo apt-get install python-dev python-pygame python-tk python-setuptools ffmpeg flvtool2&lt;br /&gt;
sudo easy_install castro
&lt;/p&gt;
&lt;p&gt;Once all that has been installed you are now ready to create your video of your test.&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: python"&gt; 
from selenium import selenium
import unittest, time, re, castro

class mypms(unittest.TestCase):
    def setUp(self):
        self.verificationErrors = []
        self.video = castro.Castro()
        self.video.start()
        self.selenium = selenium("localhost", 4444, "*firefox", "http://www.theautomatedtester.co.uk/")
        self.selenium.start()
        self.selenium.window_maximize()
		
    def test_my(self):
        sel = self.selenium
		sel.open("/")
		sel.click("link=blog")
		sel.wait_for_page_to_load("30000")
		
    def tearDown(self):
        self.selenium.stop()
        self.video.stop()
        self.video.process()
        self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":
    unittest.main()
	
&lt;/pre&gt;

&lt;p&gt;If you were to run the script above it would dump the file into /tmp and you can view the video over there. This is a very handy tool and a quick way to see where scripts are going wrong and hopefully be happy like me.&lt;/p&gt;

&lt;!-- http://twitter.com/AutomatedTester/statuses/13443974727 --&gt; &lt;style type='text/css'&gt;.bbpBox{background:url(http://s.twimg.com/a/1273008894/images/themes/theme9/bg.gif) #1A1B1F;padding:20px;}p.bbpTweet{background:#fff;padding:10px 12px 10px 12px;margin:0;min-height:48px;color:#000;font-size:18px !important;line-height:22px;-moz-border-radius:5px;-webkit-border-radius:5px}p.bbpTweet span.metadata{display:block;width:100%;clear:both;margin-top:8px;padding-top:12px;height:40px;border-top:1px solid #fff;border-top:1px solid #e6e6e6}p.bbpTweet span.metadata span.author{line-height:19px}p.bbpTweet span.metadata span.author img{float:left;margin:0 7px 0 0px;width:38px;height:38px}p.bbpTweet a:hover{text-decoration:underline}p.bbpTweet span.timestamp{font-size:12px;display:block}&lt;/style&gt; &lt;div class='bbpBox'&gt;&lt;p class='bbpTweet'&gt;woohooo got &lt;a href="http://twitter.com/search?q=%23Castro" title="#Castro" class="tweet-url hashtag" rel="nofollow"&gt;#Castro&lt;/a&gt; working to record video for my &lt;a href="http://twitter.com/search?q=%23Selenium" title="#Selenium" class="tweet-url hashtag" rel="nofollow"&gt;#Selenium&lt;/a&gt; tests on my linux box&lt;span class='timestamp'&gt;&lt;a title='Wed May 05 19:47:37 +0000 2010' href='http://twitter.com/AutomatedTester/statuses/13443974727'&gt;less than a minute ago&lt;/a&gt; via &lt;a href="http://www.tweetdeck.com" rel="nofollow"&gt;TweetDeck&lt;/a&gt;&lt;/span&gt;&lt;span class='metadata'&gt;&lt;span class='author'&gt;&lt;a href='http://twitter.com/AutomatedTester'&gt;&lt;img src='http://a1.twimg.com/profile_images/489859774/me_normal.jpg' /&gt;&lt;/a&gt;&lt;strong&gt;&lt;a href='http://twitter.com/AutomatedTester'&gt;David Burns&lt;/a&gt;&lt;/strong&gt;&lt;br/&gt;AutomatedTester&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;!-- end of tweet --&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qLZSXg7lSgC-MqWjjeWqLIztdfM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qLZSXg7lSgC-MqWjjeWqLIztdfM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qLZSXg7lSgC-MqWjjeWqLIztdfM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qLZSXg7lSgC-MqWjjeWqLIztdfM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=Ow9uRPoUNVo:BzkkOftCqzo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=Ow9uRPoUNVo:BzkkOftCqzo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=Ow9uRPoUNVo:BzkkOftCqzo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=Ow9uRPoUNVo:BzkkOftCqzo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=Ow9uRPoUNVo:BzkkOftCqzo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=Ow9uRPoUNVo:BzkkOftCqzo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=Ow9uRPoUNVo:BzkkOftCqzo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=Ow9uRPoUNVo:BzkkOftCqzo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=Ow9uRPoUNVo:BzkkOftCqzo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=Ow9uRPoUNVo:BzkkOftCqzo:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=Ow9uRPoUNVo:BzkkOftCqzo:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=Ow9uRPoUNVo:BzkkOftCqzo:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=Ow9uRPoUNVo:BzkkOftCqzo:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=Ow9uRPoUNVo:BzkkOftCqzo:s7a4DPEPgWk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=Ow9uRPoUNVo:BzkkOftCqzo:s7a4DPEPgWk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheAutomatedTester/~4/Ow9uRPoUNVo" height="1" width="1"/&gt;</description>
								  <feedburner:origLink>http://www.theautomatedtester.co.uk/blog/2010/castro-selenium-video.html</feedburner:origLink></item>
								  	<item>
									<title>London Selenium User Group</title>
									<link>http://feeds.theautomatedtester.co.uk/~r/TheAutomatedTester/~3/WXcyhH7ErEc/london-selenium-user-group.html</link>
									<description>&lt;p&gt;Last night was the 2nd ever Selenium User Group in London and what a night it was! Arriving at their office we were ushered up to 4th floor where in true Google style we were given food, lots of food and beer so that we could all hang out and have a chat.&lt;/p&gt;
&lt;p&gt;The event was mainly organised by &lt;a href="http://seleniumexamples.com/blog/"&gt;Dave Hunt&lt;/a&gt; and he did a brilliant job organising the speakers and with the help of Simon Stewart organising a venue with food and beer.&lt;/p&gt;
&lt;p&gt;Dave Hunt did a talk on how to move from Selenium 1 in the IDE and move to Selenium 2. He showed how you can use the new Selenium IDE Plugin Architecture that &lt;a href='http://adam.goucher.ca'&gt;Adam Goucher&lt;/a&gt; got going. Dave created the &lt;a href='http://github.com/davehunt/selenium-ide-webdriver-backed-formatters'&gt;WebDriverBacked Formatter plugin&lt;/a&gt; with Adam and he showed it off to good effect.&lt;/p&gt;
&lt;p&gt;It was then my turn to speak. I was speaking about Selenium 2 and what it means for the Average QA. In the talk I described the major differences like the API is a lot more concise in Selenium 2 and also describes some of the things I described in my &lt;a href='http://www.theautomatedtester.co.uk/blog/2010/why-should-i-move-to-selenium-2.html'&gt;"Why Should I move to Selenium"&lt;/a&gt; blog post I did earlier this year. I have put my presentation below for all to see.
&lt;/p&gt;
&lt;p&gt;
&lt;div class="prezi-player"&gt;&lt;style type="text/css" media="screen"&gt;.prezi-player { width: 550px; } .prezi-player-links { text-align: center; }&lt;/style&gt;&lt;object id="prezi_lpfazywyiqsm" name="prezi_lpfazywyiqsm" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="550" height="400"&gt;&lt;param name="movie" value="http://prezi.com/bin/preziloader.swf"/&gt;&lt;param name="allowfullscreen" value="true"/&gt;&lt;param name="allowscriptaccess" value="always"/&gt;&lt;param name="bgcolor" value="#ffffff"/&gt;&lt;param name="flashvars" value="prezi_id=lpfazywyiqsm&amp;amp;lock_to_path=1&amp;amp;color=ffffff&amp;amp;autoplay=no"/&gt;&lt;embed id="preziEmbed_lpfazywyiqsm" name="preziEmbed_lpfazywyiqsm" src="http://prezi.com/bin/preziloader.swf" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="550" height="400" bgcolor="#ffffff" flashvars="prezi_id=lpfazywyiqsm&amp;amp;lock_to_path=1&amp;amp;color=ffffff&amp;amp;autoplay=no"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="prezi-player-links"&gt;&lt;p&gt;&lt;a title="London Selenium Users Group talk on 20 April 2010" href="http://prezi.com/lpfazywyiqsm/"&gt;What does Selenium 2 mean to the Average QA&lt;/a&gt; on &lt;a href="http://prezi.com"&gt;Prezi&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;
And I have put my demos on &lt;a href='http://github.com/AutomatedTester/London-Selenium-User-Group'&gt;GitHub&lt;/a&gt; for all to see and play with.
&lt;/p&gt;
&lt;p&gt;
Unfortunately I had to leave at this point so I missed Eran's talk and the pub session afterwards but from what I hear it was a really good way to finish the night.
&lt;/p&gt;
&lt;p&gt;Thanks to all that turned up for the User Group meeting and making a great event!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/UbDKqSM3sUKWWLW2AFg3iWBENoI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UbDKqSM3sUKWWLW2AFg3iWBENoI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/UbDKqSM3sUKWWLW2AFg3iWBENoI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UbDKqSM3sUKWWLW2AFg3iWBENoI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=WXcyhH7ErEc:SKMETV1whiw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=WXcyhH7ErEc:SKMETV1whiw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=WXcyhH7ErEc:SKMETV1whiw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=WXcyhH7ErEc:SKMETV1whiw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=WXcyhH7ErEc:SKMETV1whiw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=WXcyhH7ErEc:SKMETV1whiw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=WXcyhH7ErEc:SKMETV1whiw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=WXcyhH7ErEc:SKMETV1whiw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=WXcyhH7ErEc:SKMETV1whiw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=WXcyhH7ErEc:SKMETV1whiw:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=WXcyhH7ErEc:SKMETV1whiw:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=WXcyhH7ErEc:SKMETV1whiw:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=WXcyhH7ErEc:SKMETV1whiw:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=WXcyhH7ErEc:SKMETV1whiw:s7a4DPEPgWk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=WXcyhH7ErEc:SKMETV1whiw:s7a4DPEPgWk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheAutomatedTester/~4/WXcyhH7ErEc" height="1" width="1"/&gt;</description>
								  <feedburner:origLink>http://www.theautomatedtester.co.uk/blog/2010/london-selenium-user-group.html</feedburner:origLink></item>
								  	<item>
									<title>Contracts have been signed</title>
									<link>http://feeds.theautomatedtester.co.uk/~r/TheAutomatedTester/~3/tqryLocd4XA/contracts-have-been-signed.html</link>
									<description>&lt;p&gt;Today I officially received my contract to write a book on Selenium. I am going to be writing a beginners guide showing people how they are start test automation working using Selenium IDE then moving on to Selenium RC and Selenium Grid. There will also be chapters on Selenium 2. &lt;/p&gt;

&lt;p&gt;The outline I went for was to help people who want to learn Selenium so they can maintain existing tests but also start writing tests using Selenium 2 and migrating their Selenium 1 tests over to Selenium 2.&lt;/p&gt;

&lt;p&gt;So look out for it later this year!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TDO1V3JjtoYgCLG9nE7F-bN2r64/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TDO1V3JjtoYgCLG9nE7F-bN2r64/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/TDO1V3JjtoYgCLG9nE7F-bN2r64/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TDO1V3JjtoYgCLG9nE7F-bN2r64/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=tqryLocd4XA:wdJvTJjfmgM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=tqryLocd4XA:wdJvTJjfmgM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=tqryLocd4XA:wdJvTJjfmgM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=tqryLocd4XA:wdJvTJjfmgM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=tqryLocd4XA:wdJvTJjfmgM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=tqryLocd4XA:wdJvTJjfmgM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=tqryLocd4XA:wdJvTJjfmgM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=tqryLocd4XA:wdJvTJjfmgM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=tqryLocd4XA:wdJvTJjfmgM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=tqryLocd4XA:wdJvTJjfmgM:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=tqryLocd4XA:wdJvTJjfmgM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=tqryLocd4XA:wdJvTJjfmgM:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=tqryLocd4XA:wdJvTJjfmgM:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.theautomatedtester.co.uk/~ff/TheAutomatedTester?a=tqryLocd4XA:wdJvTJjfmgM:s7a4DPEPgWk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheAutomatedTester?i=tqryLocd4XA:wdJvTJjfmgM:s7a4DPEPgWk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheAutomatedTester/~4/tqryLocd4XA" height="1" width="1"/&gt;</description>
								  <feedburner:origLink>http://www.theautomatedtester.co.uk/blog/2010/contracts-have-been-signed.html</feedburner:origLink></item>
								  		</channel>
									</rss>
