Your SlideShare is downloading. ×

Basic Selenium Training


Published on

Published in: Technology
  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. Selenium: Test Automation of Web Application Weekend Workshop for QA professionals Trainer: Dipesh Bhatewara Date: 23rd June 2012
  • 2. Introduction 2
  • 3. Why Test Automation 3
  • 4. Advantages of Test Automation• Frequent and quick regression testing• Rapid feedback to developers• Virtually unlimited iterations of test case execution• Support for Agile and extreme development methodologies• Increased test coverage• Enables QA team to utilize bandwidth in exploratory testing. 4
  • 5. When to automate?• Long projects – regression• Frequent releases and extreme programming• Quick feedback to developer – Sanity 5
  • 6. Web Testing: Approaches• GUI Automation – locating by coordinates – using generic OS mouse/keyboard events – suitable for any GUI app• HTML/DOM Automation – parsing HTML – evaluating HTML elements (forms, input...) – DOM as presentation of application – DOM traversal – interacting with DOM tree (target.dispatchEvent,...) 6
  • 7. Introduction to Selenium• Open Source Test Automation Framework• Developed by ThoughtWorks and Google• Robust set of tools for web-based applications• On multiple browsers• On multiple Operating Systems• Support many languages, including Ruby, Python, Java, c# and so on 7
  • 8. Selenium Components• Selenium IDE• Selenium RC• Selenium Grid• WebDriver (Selenium 2.0) 8
  • 9. Selenium IDE• Firefox plug-in• Integrated Development Environment for Selenium Tests.• Provides record and playback functionality.• Provides the ability to debug test scripts.• Auto complete common selenium commands.• Export tests in different formats like HTML, Java, Ruby, Python and so on. 9
  • 10. Installation• Download IDE from -• Add as Add On to Firefox• Launch it from Tools -> Selenium IDE 10
  • 11. IDE explained • Record/Play • Test Case • Test Suite • Command -Target – Value • Export/Import 11
  • 12. DEMO• Click on Etsy logo and verify title• Search for Vintage shoe and verify first item’s name• Run as suite 12
  • 13. Assignment - IDE•• Navigate to Category – Furniture -> Chair• Click on the first item in the result list• Verify the item details page is displayed• Assert the Price of the product shown on this page 13
  • 14. Assignment IDE Test Suite• Click on Kids section on left, on Kids page click on Tweet button, Switch to new window, Sign in with wrong username and password to twitter and check the Error.• Click on ‘Accessories’ Category and test the pagination functionality• Save the Test Suite• Run as Test Suite 14
  • 15. Commonly Used Selenium CommandsAction Commands• Open(Link) – This Command will open the specified page• click(Locator) – This Command will Click at specified target• check(Locator) – Toggles the checked value of a checkbox• type(Locator, value) –Sends text input to an element• select (Locator, value)– This will select the specified item in a listNote: most action commands in Selenium IDE also have a duplicatecommand with the AndWait suffix. When these are used the actionis performed and a page load is expected and the command will notcomplete until the page has loaded or the timeout is reached. 15
  • 16. Commonly Used Selenium CommandsStore, Check, and Wait• isElementPreset(locator) – Checks if an element is present on the page• store(expression, variableName) – Allows you to temporarily store a value• verify(pattern) – performs verification and skip execution, if fails.• assert(pattern) – performs verification and stop execution, if fails.• waitFor(pattern) – Waits until the value matches the specified value or the timeout.Note: These Commands are heart of Selenium ,as these deal withverifiacation and validation part. There are variations available inthese commands eg. waitForPageToLoad(), waitForPopUp() 16
  • 17. Object Identification• Using HTML properties of the Object – Name – Id – Class• Using Xpaths (DOM address) – XPath is a language for finding information in an XML document 17
  • 18. Xpath Explained 18
  • 19. FireBug installation & DEMO 19
  • 20. Assignment•• Find Unique HTML Ids as well as Xpaths for below – Regsiter Button – Search text box – Fashion link – 3rd Item in second row on home page 20
  • 21. Handy tool for Xpaths• Fire Path (Lets use this)• Xpather 21
  • 22. OOPS Concepts• Objects• Classes• Data abstraction• Inheritance• Polymorphism 22
  • 23. Sample Java Program 23
  • 24. Selenium RC• A server, written in Java and so available on all the platforms.• Acts as a proxy for web requests from tests.• Client libraries for many popular languages.• Bundles Selenium Core and automatically loads into the browser 24
  • 25. Selenium RC components• Selenium Server: launches and kills browsers, interprets and runs the Selenese commands passed from the test program, and acts as an HTTP proxy, intercepting and verifying HTTP messages passed between the browser and the AUT.• Client Libraries: provide the interface between each programming language and the Selenium RC Server. 25
  • 26. 26
  • 27. Install & Start• Ensure that JDK is present on the machine and is in the class path.• Downloaded Selenium RC from• Unzip to any directory on your file system.• Change directory to the Selenium Server on the command line or terminal.• Start Selenium Server. 27
  • 28. Change Directory to Selenium Server Start selenium Server 28
  • 29. Eclipse and Project setup• Launch Eclipse• Create Java project• Import selenium-client library• Add JUnit plugin to eclipse• Export the code of your Selenium IDE assignment as Selenium RC Junit4 code• Add the exported java file to the project and run 29
  • 30. Handling different types of elements & Demo• Text Box• List• Check Box• Radio Buttons 30
  • 31. Assignment• Create a fresh project in Eclipse• Add a test case to register a new user at 31
  • 32. More Assignments• Test User Sign In – Valid & Error• Test Add To Cart and verify the country can be changed on the cart page.• Run them as suite from Eclipse 32
  • 33. End of Day 1 33
  • 34. Day 2 34
  • 35. History 2004 2007 2009 2011Selenium WebDriver Selenium2 35
  • 36. WebDriver• Is a Self Contained Library• Uses browser capabilities over injected javascripts• “Best fit” technology• Clean & Object Oriented API• Easy to maintain• Faster than Selenium 1• Tightly bound to the browser, no need of Selenium Server• Bindings : Java, C#, Python, Ruby• Android and iPhone support 36
  • 37. Selenium Server in Selenium2• Replicate Selenium RC functionalities• Remote WebDriver• Selenium Grid 2 37
  • 38. WebDriverWebDriver Interface Internet HTMLFirefox Chrome Opera Andriod iPhone Explorer UnitDriver Driver Driver Driver Driver Driver Driver 38
  • 39. “BestFit”s• Internet Explorer Driver accesses the browser via the COM layer using some automation hooks that Microsoft have put there and maintain. The core code is written in C++.• FirefoxDriver is a Firefox addon that accesses items at the Chrome layer• ChromeDriver is a Chrome Extension that allows drive Chrome.• The Android driver is an APK that allows us to drive the Web View and the same with iPhone 39
  • 40. WebDriver 40
  • 41. Sample Code for Demonstration 41
  • 42. Let’s setup a project• Download• New Project• Import selenium jar• Add class imported from IDE (as Junit4 Webdriver)• Run the tests 42
  • 43. Assignment – Import Class From IDE and Run 43
  • 44. Let’s code• Add a new test class to test• Launch the site 44
  • 45. Locator Strategies• ID – webDriver.findElement("logo"));• Name – webDriver.findElement("q"));• Tag Name – webDriver.findElement(By.tagName("H1"));• Class name – webDriver.findElements(By.className("sponsor_logos"));• XPath – webDriver.findElement(By.xpath("//section*@id=‘miniconfs’+/a*2+"));• Link Text – webDriver.findElements(By.linkText("About"));• Partial Link Text – webDriver.findElement(By.partialLinkText("visitcanberra")); 45
  • 46. Page Interactions•• webElement.sendKeys(...)• webElement.submit()• Actions class -> Mouse Events / Drag and Drop 46
  • 47. Demo of Etsy Registration with Firefox 47
  • 48. Assignment 48
  • 49. Demo: Run Same Test On Different Browser 49
  • 50. Assignment: Run earlier assignment on another browser 50
  • 51. Pop-up/Alert handling• Pop up window – driver.switchTo().window(windowHan dle);• Alerts – alert = driver.switchTo().alert(); – alert.Accept(); – alert.Dismiss(); 51
  • 52. Sample Code 52
  • 53. Demo• .php 53
  • 54. Assignment 54
  • 55. Additional useful commands• Polling the DOM for N seconds – webDriver.manage().timeouts().implicitlyWai t(30, TimeUnit.SECONDS);• Testing CSS properties – webElement.getCssValue(“height”);• Javascript execution – JavascriptExecutor js = (JavascriptExecutor) webDriver; – Long value = (Long) js.executeScript("return window.scrollY");• Navigation – Navigation nav = webDriver.navigate(); – nav.back(); / nav.forward();“url”); 55
  • 56. Backward Compatibility with Selenium 1Selenium selenium = newWebDriverBackedSelenium(webDriver,“”);"");"id=follow_twitter");selenium.waitForPageToLoad("10000");WebDriver webDriver =((WebDriverBackedSelenium)selenium).getUnderlyingWebDriver(); 56
  • 57. Reference Sites• Xpath – writing-xpath-selectors-for-selenium-tests/ 57