In This Course

Did you know that a recent poll revealed that 80% of QA Automation Engineers cannot run more than 100 functional tests daily, with 95% reliability? Furthermore, over 50% of these Automation Engineers struggle to run between 0 – 50 automated functional tests per day!

Functional test automation is a hard job. However, you can make your job much easier by learning a pattern known as the Page Object Pattern. The Page Object Pattern helps to resolve a lot of the problems that other automation techniques cannot. Making your test automation more stable as a result.

This course is designed to teach you how to properly code the Page Object Pattern using Selenium Webdriver with C#.

However, all of the information here is equally applicable to any other functional testing tool because the Page Object Pattern is a universal principle that makes test automation more robust. Similar to other universal concepts such as Don’t Repeat Yourself or Single Responsibility Principle.

Therefore, if you know Object Oriented programming and a different functional automation tool, you can still comfortably follow along with all of the principles and patterns that I lay out in this course.

In this course, you will learn:

– Why other methods such as Record & Replay or Keyword Driven do not work when it comes to test automation

– What the Page Object Pattern is in automation

– Advantages and disadvantages of the Page Objects

-Amazing tips and tricks on how to:

  • Implement the Page Objects using Selenium Webdriver
  • Improve your Page Objects to follow DRY Principle
  • Improve Page Objects to follow SRP Principle
  • Create amazing Page Objects for gigantic web pages

Free Video Course

In This Lecture

In the previous video, we learned understanding why the test failed a 2nd time of the page objects in test automation course.In this video, we are going through changing the remote webdriver to firefox driver for the Page Object course.

Changing the Remote Webdriver to Firefox Driver

So, now we have our automated functional test here. It’s basically ready because it came out of the recording, and we didn’t do anything different, except for the assertion and the username and the password.

So now, in theory, it should work.


Think about it.

Take a look at this because I know you may not totally understand the bindings and the # stuff, but pretend that the webdriver is just like your web driver that you utilize anywhere else, and then that web driver performs other actions, as it normally would and obviously these conversations a pretty similar across all the different kinds of bindings.

So if you now this is pretty much your bindings and you know that this was an output of the recorded test probably the assumption is that this test should run, correct?

So, let’s go ahead and try to turn it, I’m going to go ahead and try to execute here, and you can see it run and then we’ve got this little X, it actually failed.

You can see that it failed because ‘no connection could be made…to the target machine’ why I have actively refused it.

So, this brings us to another problem of the recorded test, which was that it was initialised with a remote web driver, so that, of course, may cause some problems on different kinds of machines.

It may cause problems on mine, it may not cause problems on yours, I’m not sure.

But that’s a fix that we have to make to the recorded test in order to get it working.

So, I’m going to actually proceed to our next step of the recorded test, and here is where we are starting to apply the fixes and so that’s proceeding through the fixes of this test so that you can see how my steps are actually required to get this automated test to work.

Here I named this test ‘test 1 fix 1’ so that you can see the fix that we initiated had to make to get this test to actually to work.

I didn’t necessarily classify this down here as a fix because it’s more of an enhancement right?

I would like to have this feature to make my test better.

But this is a fix because our test would no actually execute until we made this fix.

So what I did is, initialised Firefox driver, and again I’m utilizing Firefox version 40 here, and that really important because in its current state, selenium web driver is going through a bunch of different changes, so you have to use the right version of Firefox if you are using it.

And I prefer 40becasue it doesn’t give me any issues right now.

So, again now that we’ve made this fix, this test is it going to run?

Let’s go ahead and see.

Something has come up,


Look can you use this little X again?

It means it failed.

If I expand that I can see the error.

The error is that ‘element is not currently visible and so may not be interacted with.

What is that element that cannot be interacted with?