Category Archives: Courses

Updated WebDriver SpeedRun Install Videos

Because I know that some people just want help getting started quickly.

I created the Selenium WebDriver SpeedRun Install page. This has:

  • A simple WebDriver project that you can download and run
  • A check list of instructions for installing Java and WebDriver
  • Some tutorial videos showing how to install on Windows and Mac

I have inderal online canada just updated this to cover:

  • Firefox, Marionette, GeckoDriver
  • Chrome, ChromeDriver
  • Maven 3.3.9
  • IntelliJ 2016.2
  • Windows
  • Mac

If there is a faster and easier set of ‘getting started’ videos for Windows and Mac then let me know so I can improve.

If you haven’t started working with Selenium WebDriver yet, give the install videos and checklist a try.



Posted in Get Started, Selenium Simplified Blog | Leave a comment

Recent course source code changes for WebDriver 2.46.0

I just finished updating my course source code for WebDriver 2.46.0

I removed some of the code to github:

I had to make a few other minor changes which I summarise below.

Chrome and Firefox

Chrome and ChromeDriver 2.16 now seem to work as well as the Firefox driver. I used to have some issues with Frames and Window management but that has all gone away. Now I have a single set of tests for Chrome and Firefox with no ‘fails on Chrome’ and ‘fails on Firefox’ suites.

I did have to add some additional synchronisation when creating new windows in Firefox. Firefox used to block before returning control to the code when creating new windows, but now it doesn’t so I simple ‘wait’ for the element I need to be available before clicking on it. General synchronisation goodness that we all know and love.


I did have to make changes for cookies though. I assume buy inderal 10mg online most people don’t mess much with cookies when using WebDriver, but it is handy functionality when you need it.

ChromeDriver still has a bug where it creates 2 cookies. And now, when ChromeDriver creates a cookie it prefixes the ‘domain’ with a ‘.’. This means you have to be careful working with cookies through ChromeDriver as you might have to work around the browser creating a duplicate cookie after you amend it.

Firefox updates have meant that I now have to append a ‘/’ to my cookie paths.

Minor Things

  • The Select support class gave me a string padded text, so I had to ‘trim’ the output. I suspect this was a browser compatibility thing with my app code.
  • On Mac, my window positioning code didn’t work because I set the Y value to 20, but Mac wanted more space for its top menu bar, so I changed the position to 40.


Posted in Courses, Selenium Simplified Blog, WebDriver | 1 Comment

Free Start Using Selenium WebDriver With Java Course

Free WebDriver Introductory Course

I am in the process of moving my “Start Using Selenium WebDriver With Java” Online Course to YouTube and other hosting platforms.

The main page for the course is now here

This hopefully means more free videos on YouTube and more introductory posts on this site.

If you want to as questions then use the comment feature on the blog post or contact me.


Posted in Courses, Selenium Simplified Blog | Leave a comment

Supporting notes and handouts for our Getting Started Online Course

This post supports our free online Get Started With Selenium WebDriver Using Maven, IntelliJ and Java Course

These notes are not ‘instead of’ working through the course. They are a supporting handout with the main links used in the course. But might help someone as a stand alone set of notes.

A cheat sheet, in other words.

Microsoft Virtual PC Compatibility Images

This should be your first stop

For older machines using Virtual PC


Install Browser and Plugins


  • Firebug
  • FirePath
  • FireCookie – no longer required as the functionality is now part of firebug

Optionally Install Utility Tools

You do not need these, but I use them in the videos to make it easier to see what is going on.

Install Java SDK

Install Maven

Maven –

The instructions on the official maven home page work for XP and 2000 but not for Windows 7

The video is correct and there is a summary of the steps I took here

Install IntelliJ


Optionally Install Ant and Eclipse

Only if you are using these in your environment. I cover Maven and IntelliJ

Ant the easy way


A simple project using Maven

Selenium maven info

Junit maven info

Running your maven tests

The next few sections cover running your tests through maven.

Running your maven tests from the command line

in windows explorer shift+right click

mvn test

For more info on maven see

The IDEs have plugins for this too…

Running maven from IntelliJ

use maven plugin on right

Running maven from Eclipse

I would have loved to create an easy this is how to run it from Eclipse, but I found it hard to figure out how to configure eclipse to do it. Partly why I use IntelliJ with Maven. (The video on the course shows how I did it)

It should be as simple as right click on pom.xml “Run As…”

But I had config issues. Other people have encountered it too.

Having said that… I tend to use maven from the command line when working with Eclipse. And use the IDE for creating and running single tests.

Making command line easier

You can use a variety of tools to make command line work easier.

Use of Console2

Create a folder for your code and cmd.exe open at folder. Simple.



Consider ConEmu

ConEmu is a little buy generic inderal online more complicated (a lot) but much more powerful, if you have the time then investigating ConEmu may pay dividends. I’m still learning it.


For ant we need to download the webdriver Jar and create a build.xml file

WebDriver & Selenium

A simple project with Eclipse using Ant

  • Download selenium server standalone jar (
  • Create directory libs
  • Create directory for selenium_2.25.0
  • Download junit jar (junit-4.10.jar)
  • Add to project
  • create ant file
<?xml version="1.0"?>
<project name="Run Selenium Tests" default="run_all">

<!-- Sets variables which can later be used. -->
 <!-- The value of a property is accessed via ${} -->
 <property name="src" location="src" />
 <property name="target" location="target" />
 <property name="libs" location="libs" />
 <property name="testresults" location="junit-results" />
 <property name="testreport" location="junit-report" />
<!-- default Selenium version to use by build script, override from command line
 e.g. ant -f buildfile.xml -DseleniumVersion=2.1.0 
 double check and adjust if necessary for each new version of Selenium
 <property name="seleniumVersion" value="2.25.0" />
 <!-- use a regular naming convention for the folder to make things easy
 so all selenium versions go in lib/selenium_<versionnumber> 
 <property name="seleniumLibsFolder" value="selenium_${seleniumVersion}" />
 <property name="seleniumclient" location="${libs}/${seleniumLibsFolder}/selenium-java-client-driver.jar" /> 
 <property name="seleniumserver" location="${libs}/${seleniumLibsFolder}/selenium-server-standalone-${seleniumVersion}.jar"/>
 <!-- Define the classpath which includes the junit.jar and the classes after compiling-->
 <path id="junit.class.path">
 <pathelement location="${libs}/junit-4.10.jar" />
 <pathelement location="${seleniumclient}" />
 <pathelement location="${seleniumserver}" />
 <pathelement location="${build}" />
 <!-- Deletes the existing build and result directories-->
 <target name="clean">
 <delete dir="${build}" />
 <delete dir="${testresults}" />
 <delete dir="${testreport}" />
 <!-- Creates the build, and test results directories-->
 <target name="makedir">
 <mkdir dir="${build}" />
 <mkdir dir="${testresults}" />
 <mkdir dir="${testreport}" />
<!-- Compiles the java code -->
 <target name="compile" depends="clean, makedir">
 <javac srcdir="${src}" destdir="${build}" debug="true" includeAntRuntime="false">
 <classpath refid="junit.class.path" />
 <target name="report-junit">
 <junitreport todir="${testreport}">
 <fileset dir="${testresults}">
 <include name="TEST-*.xml"/>
 <report format="frames" todir="${testreport}"/>
 <target name="run_all" depends="compile">
 <junit printsummary="yes" fork="yes" errorproperty="junit.error" failureproperty="junit.error">
 <classpath refid="junit.class.path" />
 <formatter type="xml" />
 <!-- run everything in the com.eviltester.webdriver package -->
 <batchtest todir="${testresults}">
 <fileset dir="${build}" includes="com/eviltester/webdriver/*.class" />
 <antcall target="report-junit"/>
 <fail if="junit.error" message="Selenium test(s) failed. See reports!"/>
Posted in Courses, Selenium Simplified Blog | Leave a comment

Certificates of Completion Controversy

Udemy have started offering Certificates of Completion.

But not for my courses. I opted out.


Well, I have some issues with the notion of certification which I blogged about a long time ago.

But these are certificates of completion, not a certification!

True. But…

  • I don’t agree with the wording
  • I don’t agree with the definition of completed
  • I don’t agree with the use of the word ‘successfully’
  • I don’t like a facsimile of my signature being used without my permission
  • I think it incentivises the wrong behaviour
  • I will not devalue the course

Udemy created the certificate, and I have no control or configuration over the wording of the certificate:

Certificate of Completion

This is to certify that John Smith successfully completed the ‘course name’ online course on 04.15.2013

Signed, Instructor Name

That seems innocuous enough, doesn’t it?

Well, how do Udemy define “Successfully Completed”?

  • By triggering all the API calls sent at the end of watching a video

Yeah, that’s not ‘successfully’ in my book. That’s fast forwarding to the end of a video.

So what does Successfully Completed, really mean?

  • You watched all the videos you needed to
  • You worked through all the exercises
  • The code you produced for the exercises works and was ‘good enough’
  • You reviewed the code I wrote for the course and compared it against yours to learn how we approached it differently
  • You asked me for clarification on issues you weren’t clear on
  • You read the source code for Selenium WebDriver to gain a deeper understanding of the tool
  • You experimented with all the API calls covered
  • You started writing your own automation code on production projects and realised that you were able to do this

Yeah, that’s a little different.

With online training it is impossible for me to certify this:

  • I don’t get to see your work.
  • I don’t have time to review the work created by every student – certainly not at the low price I offer the course.

Since my definition, and Udemy’s definition don’t match, I can’t put my name on the certificate. If it was just the Udemy brand name on the bottom, then I wouldn’t care. You could have your certificate of completion, because it was issued by Udemy.

But my name is on it, with a forged facsimile of my signature. I will only put my name on things I agree with. I’ve been testing too long, to ‘sign off’ on things, I don’t agree with.

You might be able to get a certificate in the future if Udemy allow me to configure the certificate, i.e. take my name off, or let me change the wording.

So what wording would pass my review?

Certificate of Action

This is to certify that John Smith has triggered the 100% viewing API for all videos of the ‘course name’ online course, with the last API called made on 04/15/2013


I appreciate it isn’t as catchy, but its honest.

Apparently a lot of people asked Udemy to add these so they could prove to their company that they had completed the course. I don’t think it does any such thing. I think your company should be able to tell that you completed the course because you now have a set of skills that you didn’t have before.

If your company wants a piece of paper that says you now have these skills then ask them to contact me, and we can arrange a fee for my conducting a review of your automation code and approach.

I’ll point out where I think you excel, where you need work, and I’ll provide examples of alternatives and pros and cons for pursuing them. I can also interview you and we can verbally talk through your understanding. If we conduct the review on site then I can pair with you and get a much better understanding of the thought processes involved.

I will sign my name on any evaluation performed like this.

In the discussion on the Instructor forums, a lot of instructors couldn’t see any issue with the certificates. They felt that it would be good marketing and they would sell more courses. I don’t think many instructors on Udemy opted out of the Certificate of Completion ‘feature’.

But I did.

I had to.

I know what happens when you measure and report on the wrong things… You get the wrong results.

I know that gamification of the wrong criteria, leads to playing the game for the ‘achievements’ not the fun, the learning or the game play.

I was not prepared to devalue the course with a “Certificate of Completion” that certified no such thing.

So, if you wonder why my Udemy courses have no “Certificate of Completion”, now you know.

Posted in Courses, Selenium Simplified Blog | 49 Comments

What do Eclipse, JUnit, Maven, Ant, etc. do?

I periodically receive FAQ style questions. But I haven’t created an FAQ page… yet.

Recently there have been an influx of people on the free “Start Using Selenium WebDriver With Java” course, and they are a little confused by the amount of software they install.

Now the course does explain a little about what the software does when using them but the course hasn’t provided an overview… until now.

The text summary follows below the video:

We have some mandatory installs:

  • Selenium WebDriver
  • Java JDK
  • Firefox
  • JUnit

We install the Java JDK because we are writing and compiling Java code.

We install Firefox because Selenium WebDriver comes bundled with all the necessary drivers for Firefox so that becomes our default first browser to automate because Selenium WebDriver makes it easy to get started with Firefox out of the box.

We have to install Selenium WebDriver, otherwise we can’t automate anything. And when we use Maven, we don’t actually need to install it, we define it as a dependency, but if we use Ant we have to do additional work to install it.

We have to install JUnit because we use that as our default Test Runner and without it we can’t run any tests. And again, when we use Maven, we don’t actually need to install it, we define it as a dependency, but if we use Ant we have to do additional work to install it.

The course has some Optional installs. You can follow the course completely without these. But they make it easier for me to work in windows, and make it clearer when I’m recording the videos, the actions where can i buy inderal online that I’m doing.

  • Command Line Replacements instead of cmd: Console2 and ConEmu
  • Rapid Environment Editor instead of the default Windows Environment property editing dialog, which can be hard to see what changes have been made.

These are completely optional, and you don’t need to install them.

We need some sort of build system. Either:

  • Ant
  • Maven

You choose one, and only need to install one. I recommend Maven.

With Maven, you declare WebDriver and JUnit as dependencies in the project configuration file, the pom.xml, and maven will download those dependencies for you.

With Ant, again you have to declare the dependencies in a build.xml configuration file. But you also need to download and install Selenium WebDriver, and JUnit.

So maven makes it easier when you are getting started as you have a few less things to worry about getting right.

You need to install one of the IDEs:

  • IntelliJ
  • Eclipse

I recommend IntelliJ as people seem to have fewer out of the box issues with IntelliJ.

The Eclipse install and setup can vary between machines and beginner’s don’t need the additional hassle of trying to figure out why things aren’t working.

IntelliJ seems to work out of the box more easily.

So, your choice:

  1. Optionally install the helper tools,
  2. Install a JDK,
  3. Install Firefox,
  4. Choose which build system you want Ant, or Maven
    1. If you choose Ant then you will need to download Selenium WebDriver and JUnit
    2. If you use Maven, then you will configure maven to download Selenium WebDriver and JUnit for you
  5. Choose and install one IDE (I recommend IntelliJ)

Hopefully this helps people only follow the parts of the introductory course that they need to.


Posted in Courses, FAQ, Java, Selenium Simplified Blog, WebDriver | 4 Comments