Version: Beta                                                                    Last Update:  22/Oct/2018

This blog is dedicated to all the QA / QE / Automation / Testing engineers out there , fighting bravely against all odds while trying to automate each and every test cases possible …. day in and day out. 

               Today ( 28th Jan ) is my b’day ( turned 35 today; but I feel young just like Dev Anand and Rocky Balboa Stallon ). As being auspicious day for myself; thought of sharing tons of information about Selenium Automation Tool which I’m gathering over last few years ( thanks to Google ) and which is laying in my Google docs. 

              What’s motive behind this blog ?  I don’t want to be similar to majority of the Indian Politicians who were & are looting Indian middle class and adding billions to their “Swiss” bank accounts since 1947.  http://en.wikipedia.org/wiki/Indian_black_money .      

                 Also my schools teachers always taught us “knowledge is the only thing in this world; which grows when you shares with others”.  Thus giving back what I had earned over the years with QA community

              This blog is mainly for Java Engineers.  Why Java ? Do search in any country’s any job sites and you will come to know how Java dominates the Selenium Automation world

             I have started my automation journey with Silk Test Tool in 2002 and have started using Selenium since 2006 when I was with Yahoo! Bangalore. Since then my motto is “Automate whatever you can and run automated scripts as many times as you can

Mark Watney Quote from The Martian movie “At some point, everything’s gonna go south on you and you’re going to say, this is it. This is how I end. Now you can either accept that, or you can get to work. That’s all it is. You just begin. You do the math. You solve one problem and you solve the next one, and then the next. And If you solve enough problems, you get to come home.” [ so true ; in everyday’s work of Automation Engineer ]

 

[ Must Read ]

What Are Your Automated Tests Really Worth ? 

A Test Pyramid Heresy – By John Ferguson Smart

How To Pass Coding Interview As An Automation Developer

3 Ways QA Engineers Can Keep Pace With Developers

 

Living Documentation

http://blog.mojotech.com/why-you-should-write-living-documentation/

http://blog.mojotech.com/how-you-should-write-living-documentation/

http://blog.mojotech.com/how-you-can-implement-living-documentation-part-three-in-a-series/

Why Automated Testing ??  ( Refer to sections Why Testing ?  Safer Refactoring , Documentation )

 

Info is divided into below categories

  1. START
  2. Selenium Training Topics
  3. Locators
  4. IDE
  5. WebDriver
  6. Junit / TestNG
  7. Best Practices ( Framework, Coding, Design Patterns etc )
  8. Grid
  9. Maven, Gradle
  10. Cucumber ( BDD )
  11. Headless Testing ( GhostDriver & PhantomJs )
  12. Parallel Execution

       


1. START

History of Selenium

       Selenium’s Inventor ( Google Testing Blog )

https://code.google.com/p/selenium/

https://github.com/seleniumhq/selenium

http://seleniumhq.wordpress.com/  ( Official Selenium Blog )

http://docs.seleniumhq.org/

Selenium wiki – covers imp chapters ( Selenium Wiki )

https://code.google.com/p/selenium/issues/list  #bug #issue ( Place to file bugs )

Difference between Selenium Server & Client / WebDriver Language Bindings

http://stackoverflow.com/questions/6995016/what-is-the-difference-between-selenium-ide-server-rc-2-0-and-webdriver

http://stackoverflow.com/questions/4774277/what-is-the-difference-between-selenium-remote-control-and-selenium-server

Selenium Quickstart by sauce labs ( architecture , concepts , various core concepts )

https://docs.saucelabs.com/ ( saucelabs docs home page )

       The Decade of Selenium

Reflections on a decade of open source testing innovation and guidance for the next  generation of testing professionals.

 

2. Selenium Training Topics

1. Selenium 2 training main points ( paid course ) http://www.qatestingtraining.com/selenium-online-training/

2. https://leanpub.com/LearningSelenium ,  

3. http://selenium.polteq.com/

4.  http://rdekleijn.nl/

5. Tarun’s Website training videos

6. Selenium Simplified Book Index Section

( http://www.compendiumdev.co.uk/selenium/toc_2nd.pdf ) ,    http://www.compendiumdev.co.uk/selenium/#demo

7.  http://www.youtube.com/user/seleniumconf/videos   ( Selenium on YouTube )

8. http://www.guru99.com/selenium-tutorial.html

9. http://javafortesters.com/  ( Index – https://leanpub.com/javaForTesters ) Book

10. http://www.sayem.org/  ( https://github.com/sayems – GitHub projects )

11.  User Selenium Like A Pro – http://elementalselenium.com , http://elementalselenium.com/tips ( Refer to all tips  Must Read)

12. http://www.toolsqa.com – One more training website

13. http://thechort.com/blog/  ,  https://github.com/orieken –  Oscar Rieken

14. https://code.google.com/p/selenium/w/list – Selenium Wiki Page

15. How to find selenium information on your own – Dave Haeffner

16.  http://www.learn-automation.com/

17.  http://software-testing-tutorials-automation.blogspot.in/

18.  http://selenium-by-arun.blogspot.com.br/

19.  Selenium Basic Series by “utest university” 

20. Testing a Web Application with Selenium 2   ( Thomas Sandberg ) Selenium 2  , 

       Page Objects , Cucumber , Maven 

21. http://www.softwaretestinghelp.com/selenium-tutorial-1/ ( Selenium Tutorials )

22. Selenium 3 Webinar by Simon Stewart 


https://huddle.eurostarsoftwaretesting.com/resource/test-automation/using-selenium-3/


http://testautomation.applitools.com/post/144952401467/webinar-recording-selenium-30-the-spec-and

23. https://saucelabs.com/blog/selenium-3-is-coming

24. https://www.youtube.com/user/saucelabs/videos

25.  https://saucelabs.com/resources/webinars

26.  Grading Your Selenium Tests by Dave Haeffner ( http://www.slideshare.net/saucelabs/how-to-grade-your-selenium-tests-by-dave-haeffner-sauce-labs-webinar )

3. Locators

id, xpath, css, className …. linkText, partialLinkText ….. name, tagName…. how, using

1. https://www.simple-talk.com/dotnet/.net-framework/xpath,-css,-dom-and-selenium-the-rosetta-stone/  ( XPath, CSS, DOM and Selenium: The Rosetta Stone )

2. http://blog.varunin.com/ ( CSS )

3. http://www.qaautomation.net/?p=388   ( Locating page elements using web driver )

4. http://seleneselearner.blogspot.com/2011/01/xpath-locators.html ( Object Locator )

5. http://selenium.polteq.com/en/category/locators/

6. https://developers.google.com/chrome-developer-tools/docs/elements?csw=1 ( Chrome Browser Dev Tool )

7. http://robertnyman.com/firefinder/ ( CSS FireFinder Tutorial )

8. http://blog.eviltester.com/2010/03/use-firefinder-to-help-you-construct-selenium-css-selectors.html

9. http://www.ibm.com/developerworks/library/wa-selenium2/ ( GitHub Page example )

10. https://thenewcircle.com/bookshelf/selenium_tutorial/locators.html

11. http://blog.mozilla.org/webqa/2013/09/26/writing-reliable-locators-for-selenium-and-webdriver-tests/ – Writing Reliable Locators

12.  http://software-testing-tutorials-automation.blogspot.se/2013/06/selenium-css-locators-tutorial-with.html – CSS Locators tutorial

13. http://www.tutorialspoint.com/selenium/selenium_locators.htm

14. http://www.w3schools.com/tags/default.asp Html tags

15. http://selenium-tutorial.blogspot.de/2013/08/highlight-element-webdriver.html – HighLight An Element WebDriver

        16. @FindBy location strategy ( PageObject, PageFactory )

Annotation Type FindBy ( seleniumhq official documentation )

4. IDE

        http://docs.seleniumhq.org/download/#side_plugins  – few other plug-ins

http://blog.reallysimplethoughts.com/2010/10/01/learn-alternate-locators-using-selenium-ide/

http://blog.reallysimplethoughts.com/2011/09/30/managing-locator-builders-in-selenium-ide/

http://software-testing-tutorials-automation.blogspot.in/2013/07/set-locator-builders-preference-in.html

WebDriver Element Locator

FireBug

       Katalon Automation Recorder

( Selenium IDE alternative for new version of FF, Chrome )

–      https://www.katalon.com/resources-center/blog/katalon-automation-recorder/

              –      https://www.katalon.com/videos/

–      https://addons.mozilla.org/en-US/firefox/addon/katalon-automation-record/

–      https://www.katalon.com/features/ 

–      Firefox 55 & Selenium IDE

https://seleniumhq.wordpress.com/2017/08/09/firefox-55-and-selenium-ide/  )

        Element Locator ( Chrome Extension similar to WebDriver Element Locator on old version of FF )

 

5. WebDriver

http://selenium.googlecode.com/git/docs/api/java/index.html  – API References

http://www.aosabook.org/en/selenium.html

https://code.google.com/p/selenium/downloads/list

http://docs.seleniumhq.org/download/

Sample Selenium Projects Download  ( Tarun’s Blog )

http://www.seleniumtests.com/p/free-selenium-training.html ( Tarun’s Blog )

http://www.seleniumtests.com/p/testing-video-tutorials.html

http://google-opensource.blogspot.com/2009/05/introducing-webdriver.html ( Why WebDriver )

http://code.google.com/p/selenium/wiki/GettingStarted ( Selenium 2.0 )

http://www.w3.org/TR/webdriver/

http://seleniumsimplified.com/category/webdriver/ ( Touched multiple topics Must Read )

http://blog.eviltester.com/   

Logging – http://jankesterblog.blogspot.in/2011/08/test-automation-in-agile.html

http://assertselenium.com/  ( wait commands )

http://seleniumwebdriverfaq.blogspot.in/

Chrome Browser

https://code.google.com/p/selenium/wiki/ChromeDriver

https://code.google.com/p/chromedriver/wiki/GettingStarted

Why and When JavaScript ?

http://autumnator.wordpress.com/2013/02/09/javascript-is-your-ally-for-selenium-webdriver/

6.  JUnit / TestNG

1. If @Test is missing then Run As -> JUnit Test option is not seen in eclipse

2. http://selftechy.com/2011/06/07/selenium-2-with-junit4-create-tests-generate-reports ( sample code with Junit )

3. http://nadimsaker.blogspot.in/2011/10/how-to-run-selenium-webdriver-code-with.html ( sample code with Junit )

4. different between static and non static import statements ?

5. different between import …Assert; and import …Assert.*;

6. Why non static import for Assert is not working ?

7. public class Chapter2 extends LoadableComponent  what is this declaration ??

8. http://www.istebu.net/selenium/dis02_testng/?goback=%2Egde_4574138_member_148409200 ( TestNG setup with Eclipse )

9. http://vishalsachan.blogspot.com/2010/09/configuring-selenium-rc-with-testng_05.html  ( Configuring Selenium RC with TestNG using eclipse )

10. http://testng.org/doc/selenium.html ( Selenium + TestNG )

11. http://testng.org/javadoc/  , http://testng.org/doc/documentation-main.html

12 . http://executeautomation.com/blog/how-to-configure-testng-with-testng-xml-2/  ( testng.xml setup )

13. http://www.guru99.com/all-about-testng-and-selenium.html

14. http://www.mkyong.com/unittest/testng-tutorial-7-dependency-test/

15. https://weblogs.java.net/blog/johnsmart/archive/2010/08/09/selenium-2web-driver-land-where-page-objects-are-king

16. http://qtp-help.blogspot.in/2010/07/testng-take-screenshot-of-failed-test.html ( TestNG listerner to take screen shot )

17. What is TestNG Listener – http://rationaleemotions.wordpress.com/2012/01/27/listen-to-what-i-have-to-say-about-testng-listeners/

18. http://darrellgrainger.blogspot.ca/2011/02/generating-screen-capture-on-exception.html ( WebDriverEventListener )

19.  Why to use JUnit ?

20.  Why TestNG and its usage in framework ? 

7. Best Practices   (Framework , Coding , Design Patterns etc)

1. Framework should be like a Circus

2. First you create page object , which has particular animals characteristics

3. Then you are steps which means tricks the animal can do

4. Actual test case is just calling different tricks of different animal to make sense to circus viewer.

Guide To Test Automation Framework & How To Build Yours ( Must Read Bas Dijkstra )

Design Patterns

  • Page Object Pattern
  • Page Factory Pattern
  • DRY
  • Journey Pattern / Screenplay Pattern

Design Patterns Every Test Automation Engineer Should Know

Complete Guide How To Use Design Patterns In Automation

1. http://www.slideshare.net/wakaleo/serenity-and-the-journey-pattern

2. http://www.theautomatedtester.co.uk/tutorials/selenium/page-object-pattern.htm

3. https://confengine.com/selenium-conf-2014/proposal/293/perils-of-page-object-pattern

4. http://burdettelamar.wordpress.com/2014/03/21/keep-your-page-objects-dry/

5. http://fasterchaos.svbtle.com/journey-pattern

6. https://ideas.riverglide.com/page-objects-refactored-12ec3541990#.x89uuucwp

7. https://janmolak.com/from-acceptance-tests-to-user-guides-71fc9756d341#.xp0tt5wbh

8.  http://testerstories.com/category/automation/serenity/ ( Serenity related 4 posts + Cucumber ,  Screenplay Pattern , Journey )

9. https://code.google.com/p/selenium/wiki/PageObjects

10. https://code.google.com/p/selenium/w/list?q=label:WebDriver

11. https://code.google.com/p/selenium/wiki/DesignPatterns

12. http://www.seleniumtests.com/p/selenium-frameworks.html

13.  https://github.com/thucydides-webtests/thucydides , ( Serenity )

http://www.thucydides.info/documentation , http://thucydides-webtests.com/ ,

http://assertselenium.com/2013/01/24/thucydides-the-atdd-way/

http://www.slideshare.net/wakaleo/presentations

http://www.wakaleo.com/resources/thucydides ( Thucydides is an open source library that lets you useWebDriver/Selenium 2 to write better acceptance tests )

14.  http://stackoverflow.com/questions/5359150/selenium-web-test-automation-framework-best-practices ( Automation Framework Best Practices )

15.   http://www.grazitti.com/resources/press-releases/184-selenium-2-automation-framework-on-github.html ( Selenium 2 Framework )

16.   https://github.com/Ardesco/Ebselen   – Open Source automation framework

17.    http://blog.infostretch.com/?p=806

18.  http://www.youtube.com/watch?v=WJnlOQ3zxro&feature=related – How to write better selenium code

19. Folder Structure Creation

19.1 http://swtestingforyou.wordpress.com/2011/07/05/create-selenium-tests-project-structure-in-eclipse-with-junit/ ,

19.2 http://www.tutorialspoint.com/eclipse/eclipse_create_java_package.htm ,

19.3 http://whytotest.blogspot.in/2010/05/selenium-test-framework.html   ( Folder Structure )

19.4 http://blog.recurtrix.com/2012/09/Organize-selenium-project-structure.html

19.5 http://blog.recurtrix.com/2012/07/how-to-organize-eclipse-project.html

20. http://seleniumtestautomationtipsandtricks.blogspot.in/ ( Tips and Tricks )

21. http://luizfar.wordpress.com/2010/09/29/page-objects/

22. http://jankesterblog.blogspot.in/2011/08/good-principles-of-test-automation.html, http://jankesterblog.blogspot.in/2011/08/test-automation-in-agile.html

23. http://www.summa-tech.com/blog/2011/10/10/using-page-objects-with-selenium-and-web-driver-20/
Page Objects in Selenium 2 Presentation

24. Using Loadable Component (  Selenium wiki page )

25. http://martinfowler.com/bliki/PageObject.html ( Page Object  – Martin Fowler )

26. http://martinfowler.com/bliki/TellDontAsk.html ( Tell but don’t ASK )

27. http://www.sonarqube.org/features/ ( SonarQube – Code health dash board, Code Quality Monitor )

28. Implementing Continuous Deliver – Thoughtworks ( Automated Testing )

Architecting for Continuous Delivery

29. http://maryannmp.wordpress.com/ (  Starting Selenium Automation Effort from Scratch )

30. http://www.pushtotest.com/create-robust-selenium-tests-with-pageobjects ( PageObject Brings Object Oriented Benefits To Your Test Scripts )

31. http://www.pushtotest.com/frank-cohen

32. http://seleniumtestingworld.blogspot.de/

33. Page Object Pattern In Test Automation

34. How To Setup Continuous Testing Framework using Selenium, Maven & Jenkins

35.  Page Factory Design Pattern ( Enhanced POM )

 

8. Grid

“…..your framework should also support parallel execution if you want to run multiple test parallel using Grid….”

  1.  https://code.google.com/p/selenium/wiki/Grid2   ( WebDriver and Grid )

  2.  http://qtp-help.blogspot.com/2011/09/selenium-grid-with-webdriver.html  ( Grid 2.0 and Web Driver )

  3.   http://rationaleemotions.wordpress.com/2012/01/23/setting-up-grid2-and-working-with-it/ (  Setting up Grid 2 )

  4.   Building a Self Healing Grid

  5.   Working with a custom capability matcher

  6.   Leveraging some of the Grid APIS , end-to-end documentation on Grid ( Krishnan Mahadevan )

  7.   http://blog.karit.geek.nz/2011/01/selenium-grid-part-4-how-to-get.html

  8.  http://docs.seleniumhq.org/docs/07_selenium_grid.jsp ( Official Documentation )

  9.  Grid vs TestNG Parallel Execution – http://www.deepshiftlabs.com/sel_blog/?p=1932&lang=en-us

  10. http://elementalselenium.com/tips/52-grid 

          ( If you’re looking to run your tests on different browser and operating system combinations but you’re unable to justify using a third-party solution like Sauce Labs or Browser Stack then what do you do? )

  11.  http://blog.mattcallanan.net/2014/04/ideas-for-running-cucumber-jvm-selenium.html 

  12.  http://www.opencredo.com/2013/07/02/running-cucumber-jvm-tests-in-parallel/  ( Cucumber-JVM , Grid , Parallel )

9. Maven, Gradle

1.   Maven Path

2.   http://www.tutorialspoint.com/maven/maven_overview.htm

3.   Selenium WebDriver – Maven Part 1

4.   Steps to Plugin Maven into Eclipse IDE

5.   http://orangletrik.wordpress.com/2013/01/31/install-maven-plugin-in-eclipse-juno/

6.   http://wiki.eclipse.org/M2E_updatesite_and_gittags

7.    http://www.viaboxxsystems.de/start-your-webtests-with-selenium2-maven-testng-now

8.    http://stackoverflow.com/questions/2449461/convert-existing-eclipse-project-to-maven-project ( Converting Java project to Maven project )

9.   http://tuventytuventy.wordpress.com/2011/12/06/installing-selenium-2-0-maventestng-and-eclipse/ ( Selenium + Maven + TestNG + Eclipse )

10.   https://github.com/freynaud/testng-support/wiki ( Tutorial on how to start a selenium + testng + maven )

11.   Importing Maven project into Eclipse

12.   what is POM.xml

13.   Gradle Tool ( Build Automation )

14.   Gradle Summit  ( Selenium And Gradle )

15.   Maven Eclipse plug-in

16.    http://books.sonatype.com/mvnref-book/reference/ – Maven Complete Reference

17.   Hello World ( Maven, M2Eclipse, Eclipse )

18.    Convert Maven build to Gradle

10 . Cucumber ( BDD )

As this is quite critical and exhaustive topic , have decided to move content 

into new post. You can check it in same blog itself .       

https://vikramviknowledgesharing.wordpress.com/2017/01/01/behavior-driven-development-bdd-cucumber/

 

11.  Headless Testing ( GhostDriver & PhantomJs )

http://codeception.com/05-13-2013/phantom-js-headless-testing.html

http://www.assertselenium.com/headless-testing/getting-started-with-ghostdriver-phantomjs/

( Headless mode – email thread in Serenity Google Group )

http://stackoverflow.com/questions/28267809/phantomjs-getting-killed-9-for-anything-im-trying

http://elementalselenium.com/tips/46-headless-ghostdriver

http://phantomjs.org/

12. Parallel Execution 

1>  Challenges faced with longer test suite , Grid approach

http://www.pabich.eu/2014/06/how-to-run-selenium-tests-in-parallel.html


2>  Running Your Tests In Parallel 
https://saucelabs.com/selenium/selenium-webdriver 


3>  
Parallel Execution Methods ( TestNG , JUnit , Grid Approach ) Generic Google search

TestNG

1>  http://clearqa.blogspot.in/2013/04/run-selenium-tests-in-parallel-on.html ( Single Machine – Parallel Run on different browsers )

2>  http://rationaleemotions.wordpress.com/2013/07/31/parallel-webdriver-executions-using-testng/ – Parallel WebDriver Executions Using TestNG

JUnit

1> http://wakaleo.com/blog/running-junit-tests-in-parallel-with-maven

2> https://maven.apache.org/surefire/maven-surefire-plugin/examples/fork-options-and-parallel-execution.html

3> https://maven.apache.org/surefire/maven-failsafe-plugin/examples/fork-options-and-parallel-execution.html

Conclusion


In case your web app + Selenium does NOT support same machine – multiple browser approach ( as your webapp requires active state ) , then only option left to speed up testing is “Grid”