TesterHQ - The Evil Tester Blog Aggregator

Sep 7, 2012 - 1 minute read - Maven Selenium Simplified Blog

Installing Maven for WebDriver on Windows 7

Just a quick post in case anyone else stumbles into issues configuring Maven on Windows 7 when you really just want to dive into WebDriver. I tried to follow along with the instructions for installing Maven on the maven site. http://maven.apache.org/download.html#Installation The original writer wrote the instructions for Windows 2000 and XP, so I shall assume they work on Windows 2000 and XP. For Windows 7, I found that if I created an M2 variable then, because alphabetically it comes before M2_HOME in a search, that M2_HOME did not expand in the paths.

Aug 31, 2012 - 3 minute read - Entertainment Evil Tester

Captcha as a modern EVP

“Clearly robots would try to take over the world and make the entire human race subservient if they could get their evil metallic hands on the kind of software I buy” The last time I had to test a Captcha I found it very difficult. It killed our automation It made our manual testing really slow We had to tweak it to make it cope with the human ability to reinterpret “garbage in” so it would produce less “garbage out”, which made it less random It was a third party thing which we had very little control over Benefits:

Aug 22, 2012 - 2 minute read - Selenium Simplified Blog WebDriver

FluentWait with WebElement

My synchronisation strategies with WebDriver have generally revolved around the WebDriverWait and creating custom ExpectedCondition objects. When I first saw the FluentWait, I dismissed it as a slightly more customisable version of the WebDriverWait. But then I looked more closely at the signature of the constructor, and I noticed the Generics being used. The use of Generics means I don’t have to pass in a WebDriver, I could use a WebElement, or a By, or anything I want really.

Aug 21, 2012 - 3 minute read - Selenium Simplified Blog WebDriver

Categorising WebDriver–Navigation, Interrogation, Manipulation

Hands up who uses generalisation in their modelling strategies? Me too! I’ve worked through the WebDriver API in some detail and as part of figuring out a way to replay the API back to people learning WebDriver. I have adopted 3 main classifications: Navigation Interrogation Manipulation My 4th categorisation has resulted in fewer methods: Synchronisation I initially expected to find more in the Synchronisation category, since the strategies around synchronisation often consume a lot of automation time.

Aug 18, 2012 - 2 minute read - Selenium Simplified Blog WebDriver

Advanced User Interactions and the expletive machine

For the life of me, I could not get User Interactions to work properly. They just wouldn’t work. They used to work, last time I tried them. But now… new Actions(driver).keyDown(Keys.CONTROL). sendKeys("b"). keyUp(Keys.CONTROL). perform(); ”!*&^*&£$“, as old comics used to illustrate the expletive. I found I wasn’t alone on the forums. I used a simple user interactions experimental page which had enough to let me see what was happening: key_click_display.html

Aug 17, 2012 - 3 minute read - Selenium Simplified Blog WebDriver

Because sometimes it's hard... some tips for "Working with WebDriver"

"They" should pass a law requiring all titles to utilise alliteration. I can see why people find it hard to work with WebDriver, particularly people new to the tool. Over the years I have learned to expect constant change from the Selenium toolset. After all, the ongoing betterment of web automation worldwide must continue. The API changes. Sometimes it works in this browser sometimes it doesn’t, sometimes a browser upgrade breaks Selenium.

Aug 3, 2012 - 2 minute read - Selenium Simplified Blog WebDriver

A minimal WebDriver based DSL

I read on the Wikipedia entry for Selenium, that Selenium 2.0 aims to provide a base for your own DSL (Domain Specific Language). “What might such a language look like?” I thought to myself. Well, I’ve build DSLs before, but I really thought “What might the minimal DSL that I could create look like?” And so, we proudly present. The FluentWebElement. Yes, all you Seleniumists and Webdriverites, now you too can write:

Aug 3, 2012 - 3 minute read - Selenium Simplified Blog WebDriver

Sporting Event Tribute Using Selenium WebDriver

As I write this, the capital city of England currently hosts a large sporting event. I can mention no names nor dates, for that sequence of words forms part of the protected thou shalt not use list. I don’t even know if ‘they’ will allow me to link to that page. Regardless, I created a small test app which pays tribute to sporting events through the years.   Since I grew up in the 80s, programming on ZX Spectrums, I have a fondness for scrolly text that judders.

Jun 15, 2012 - 1 minute read - Selenium Simplified Selenium Simplified Blog

Second Edition of Selenium Simplified is out

I just noticed that this blog only links to the first edition of Selenium Simplified on amazon. This is particularly tardy and particularly poor marketing since the Second edition has been out for some time. The 2nd edition is a refresh of the 1st edition. It doesn’t really have any new material, but has been updated so that all the old material works with the current versions of Selenium. You can find it on Amazon (these are affiliate links):

Jun 15, 2012 - 2 minute read - Selenium Simplified Blog WebDriver

I never expected ExpectedConditions

I was having a brief trawl through the Selenium codebase and noticed something I hadn’t seen before. An ExpectedConditions class which exposes a bunch of static methods to save me having to write code. And it does save me having to write code. For example in the past I would have written something like this: driver.get("http://compendiumdev.co.uk/selenium/calculate.php"); new WebDriverWait(driver,10). until(new TitleContainsCondition("Selenium")); This opens the driver to the page and waits until the Title contains the text “Selenium”.