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
- START
- Selenium Training Topics
- Locators
- IDE
- WebDriver
- Junit / TestNG
- Best Practices ( Framework, Coding, Design Patterns etc )
- Grid
- Maven, Gradle
- Cucumber ( BDD )
- Headless Testing ( GhostDriver & PhantomJs )
- Parallel Execution
1. START
Selenium’s Inventor ( Google Testing Blog )
https://code.google.com/p/selenium/
https://github.com/seleniumhq/selenium
http://seleniumhq.wordpress.com/ ( Official Selenium Blog )
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
Selenium Quickstart by sauce labs ( architecture , concepts , various core concepts )
https://docs.saucelabs.com/ ( saucelabs docs home page )
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/
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/
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 )
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/
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 )
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.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 )
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
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
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”