Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Automation Tests with
Selenium
© By Tzirla Rozental
Agenda:
What is QA Automation?
What and How to Automate?
Create Project
Code Planning & Design
Selenium selectors
Run test
Failures
What is QA Automation
Tests?
Software executes and replaces tasks
that done manually
Automates tasks that are impossible to
do manually
What and How to
Automate?
Automation - web testing with selenium
Automation - web testing with selenium
Automation - web testing with selenium
Automation - web testing with selenium
Automation - web testing with selenium
Automation - web testing with selenium
2. What is the interface that needs to be
tested? (CLI, API, GUI ?)
Automation - web testing with selenium
Automation - web testing with selenium
How to pick the right tool?
 Ease of Use
 Tool availability
 Support all kinds of tests you need
 Able to create Automated Tests Without Programming
 Automated Test Scripting
 More: compare results, logging, exporting, support
multi kinds of environments etc.
Features TestComplete Selenium UFT
Record and
Playback
Yes Limited Yes
Scripting
Languages
Python, VBScript,
JScript, C++, C#, and
Delphi
Java, C#, Ruby,
Python, Perl, PHP ,
Javascript
VBScript
IDE Integrations
VisualStudio and
RADStudio
Intellij, Eclipse,
Visual Studio
None
Unit Testing
Support
PyUnit, Ruby, PHPUnit,
JUnit, NUnit, and
TestNG
Java, C#, Ruby,
Python,Perl, PHP ,
Javascript
VBScript
BDD/TDD Support Yes Manual None
Data-Driven
Testing
Yes Manual Yes
Source Control
Management
Git, Subversion, Visual
SourceSafe, CVS, Team
Coherence
Manual Git and Subversion
Writing the web
Automation tests
with
Selenium Web Driver
Install and Create the Project:
1. Install java
2. Install Eclipse and select Workspace
3. Install Selenium (last version)
http://www.softwaretestinghelp.com/webdriver-eclipse-installation-selenium-
tutorial-9/
4. Install Maven (for Maven project) – From eclipse Marketplace
5. Create a Maven Project
6. Install TestNG and configure to right version – From eclipse Marketplace
7. Download jar for browser (for example: ‘chromedriver.exe’ for running tests on
Chrome)
I
Select the Workspace:
Create maven project
From Top menu select File -
>New -> Other
In the pop-up window select Maven
and continue according the steps in
above link:
See full scenario:
http://toolsqa.com/java/maven/create-new-maven-project-eclipse/
Install plugins from Eclipse Marketplace
In top menu select Help ->
Eclipse Marketplace
Search for plugin and install
Code Planning
& Design
Before Starting:
‘test’ package and ‘src’ package
3 Layer model:
Test
BusinessLogic
Page
Common Package – static classes
 General – static arguments
that are sets one a run
 SeleniumActions – include
all selenium selectors
functions
 Utils – manage the
activation of the run
Inheritance in ‘tests’ layer – Actions in
BaseTest – set the logger and driver
 @BeforeClass – set logger and Driver  @AfterClass – stop the driver
Check actions that needed for test
-> TODO
Page Layer
Inheritance in page – BasePage.java
Inheritance in page – child pages classes
extends from the BasePage.java
 HomePage.java  RegistrationPage.java
Finding Elements:
• Using inspect in browser
• Selenium elements locators
• Css and xpath
• findElement() and findElements()
Can see more in:
http://www.slideshare.net/LivePersonDev/selenium-webdriver-element-locators
Inspect in browser
Selenium element locators:
 Id –> driver.findelement(By.id(“id”))
 Name -> driver.findelement(By.name(“name attribute”))
 Tag name -> driver.findelement(By.tagname(“a”))
 LinkText-> driver.findelement(By.linktext(“text_on_link”))
 Css -> driver.findelement(By.cssselector(“#id”))
 xpath -> driver.findelement(By.xpath(“//*[@id=‘id’]”))
 Text -> driver.findelement(By.text(“visible text”))
Css and Xpath
By css – for example:
 Id: “#elementid”
 Class: “.elementclass”
 Otherattribute: “th[style=‘style’]”
 Otherattribute – not specific tag:
“[style=‘style’]”
 Contains: “[class*=‘cl’]”
 Absolute path: “tbody>tr>td”
 Not absolute path: “tbody td”
By xpath – for example:
 “//table[@id=‘tableid’]”
 “//table[@class=‘classname’]”
 “//table[@disabled=‘false’]”
 “//*[@style=‘style’]”
 “//table[contains(@style,’top’)]”
 “//table/tbody/tr/td”
 “tbody//td”
findElement() and findElements()
findElement() findElements()
0
matches
throw exception
(NoSuchElement exception) returns empty list
1 match return the found element returns list with one element
2+
matches
returns only the first one
that found
returns list with all found
elements
Actions on Element
 Selenium Element.Click()
 Element.Clear()
 Element.Sendkeys(text)
 Selenium execute script with java script query:
 jsClick()
 mouseover()
Init page – PageFactory
 @FindBy
(how = How.ID, using = “elementId")
WebElement element
 @FindAll
({@FindBy(how = How.ID, using = “elementId1"),@FindBy(how = How.ID, using =
“elementId2") })
WebElement someElement
Init page syntacs :
Wrong: Page page1 = new Page();
Correct: Page page1 = PageFactory.initElement(WebDriver driver, Page.class);
Business Logic Layer
BusinessLogic layer – Mediator between
the Test and the page
 Processing commands (send to click on element)
 Coordinating workflow (test sent to got message after click on
element)
 Maintaining application state (current data in page)
 Accessing data(from page or other, get data from displayed message)
 Making logical decisions
 Performing calculations
 Page Object – BL layer get and returns an object with data from page
Write the @Test
 Use method created before in page layer and BL
layer
 Write as the steps order in manual test
 Add logs:
Explain what each step is going to check
 Assert – apply the checking
 Leave clean area at the end of the test
@Annotations
 TestNG annotations - @Test, @BeforeMethod,
@AfterMethod etc.
 Java,lang annotations - @Override, @Deprecated
etc.
 Org.openqa.selenium.supportannotations -
@FindBy, @FindAll etc.
Run / Debug Test with TestNG
Run / Debug Configuration:
Select Class and Method Set system property (if needed)
OOPS… Failures
 Check Test Failed
 tackeScreenshot() Method will keep the site
appearance when test failed
 Check Exception
 Check in log
 Failures reasons: automation code issue/
dev changes / bug
Good Luck!

More Related Content

Automation - web testing with selenium

  • 2. Agenda: What is QA Automation? What and How to Automate? Create Project Code Planning & Design Selenium selectors Run test Failures
  • 3. What is QA Automation Tests? Software executes and replaces tasks that done manually Automates tasks that are impossible to do manually
  • 4. What and How to Automate?
  • 11. 2. What is the interface that needs to be tested? (CLI, API, GUI ?)
  • 14. How to pick the right tool?  Ease of Use  Tool availability  Support all kinds of tests you need  Able to create Automated Tests Without Programming  Automated Test Scripting  More: compare results, logging, exporting, support multi kinds of environments etc.
  • 15. Features TestComplete Selenium UFT Record and Playback Yes Limited Yes Scripting Languages Python, VBScript, JScript, C++, C#, and Delphi Java, C#, Ruby, Python, Perl, PHP , Javascript VBScript IDE Integrations VisualStudio and RADStudio Intellij, Eclipse, Visual Studio None Unit Testing Support PyUnit, Ruby, PHPUnit, JUnit, NUnit, and TestNG Java, C#, Ruby, Python,Perl, PHP , Javascript VBScript BDD/TDD Support Yes Manual None Data-Driven Testing Yes Manual Yes Source Control Management Git, Subversion, Visual SourceSafe, CVS, Team Coherence Manual Git and Subversion
  • 16. Writing the web Automation tests with Selenium Web Driver
  • 17. Install and Create the Project: 1. Install java 2. Install Eclipse and select Workspace 3. Install Selenium (last version) http://www.softwaretestinghelp.com/webdriver-eclipse-installation-selenium- tutorial-9/ 4. Install Maven (for Maven project) – From eclipse Marketplace 5. Create a Maven Project 6. Install TestNG and configure to right version – From eclipse Marketplace 7. Download jar for browser (for example: ‘chromedriver.exe’ for running tests on Chrome) I
  • 19. Create maven project From Top menu select File - >New -> Other In the pop-up window select Maven and continue according the steps in above link: See full scenario: http://toolsqa.com/java/maven/create-new-maven-project-eclipse/
  • 20. Install plugins from Eclipse Marketplace In top menu select Help -> Eclipse Marketplace Search for plugin and install
  • 22. Before Starting: ‘test’ package and ‘src’ package
  • 24. Common Package – static classes  General – static arguments that are sets one a run  SeleniumActions – include all selenium selectors functions  Utils – manage the activation of the run
  • 25. Inheritance in ‘tests’ layer – Actions in BaseTest – set the logger and driver  @BeforeClass – set logger and Driver  @AfterClass – stop the driver
  • 26. Check actions that needed for test -> TODO
  • 28. Inheritance in page – BasePage.java
  • 29. Inheritance in page – child pages classes extends from the BasePage.java  HomePage.java  RegistrationPage.java
  • 30. Finding Elements: • Using inspect in browser • Selenium elements locators • Css and xpath • findElement() and findElements() Can see more in: http://www.slideshare.net/LivePersonDev/selenium-webdriver-element-locators
  • 32. Selenium element locators:  Id –> driver.findelement(By.id(“id”))  Name -> driver.findelement(By.name(“name attribute”))  Tag name -> driver.findelement(By.tagname(“a”))  LinkText-> driver.findelement(By.linktext(“text_on_link”))  Css -> driver.findelement(By.cssselector(“#id”))  xpath -> driver.findelement(By.xpath(“//*[@id=‘id’]”))  Text -> driver.findelement(By.text(“visible text”))
  • 33. Css and Xpath By css – for example:  Id: “#elementid”  Class: “.elementclass”  Otherattribute: “th[style=‘style’]”  Otherattribute – not specific tag: “[style=‘style’]”  Contains: “[class*=‘cl’]”  Absolute path: “tbody>tr>td”  Not absolute path: “tbody td” By xpath – for example:  “//table[@id=‘tableid’]”  “//table[@class=‘classname’]”  “//table[@disabled=‘false’]”  “//*[@style=‘style’]”  “//table[contains(@style,’top’)]”  “//table/tbody/tr/td”  “tbody//td”
  • 34. findElement() and findElements() findElement() findElements() 0 matches throw exception (NoSuchElement exception) returns empty list 1 match return the found element returns list with one element 2+ matches returns only the first one that found returns list with all found elements
  • 35. Actions on Element  Selenium Element.Click()  Element.Clear()  Element.Sendkeys(text)  Selenium execute script with java script query:  jsClick()  mouseover()
  • 36. Init page – PageFactory  @FindBy (how = How.ID, using = “elementId") WebElement element  @FindAll ({@FindBy(how = How.ID, using = “elementId1"),@FindBy(how = How.ID, using = “elementId2") }) WebElement someElement Init page syntacs : Wrong: Page page1 = new Page(); Correct: Page page1 = PageFactory.initElement(WebDriver driver, Page.class);
  • 38. BusinessLogic layer – Mediator between the Test and the page  Processing commands (send to click on element)  Coordinating workflow (test sent to got message after click on element)  Maintaining application state (current data in page)  Accessing data(from page or other, get data from displayed message)  Making logical decisions  Performing calculations  Page Object – BL layer get and returns an object with data from page
  • 39. Write the @Test  Use method created before in page layer and BL layer  Write as the steps order in manual test  Add logs: Explain what each step is going to check  Assert – apply the checking  Leave clean area at the end of the test
  • 40. @Annotations  TestNG annotations - @Test, @BeforeMethod, @AfterMethod etc.  Java,lang annotations - @Override, @Deprecated etc.  Org.openqa.selenium.supportannotations - @FindBy, @FindAll etc.
  • 41. Run / Debug Test with TestNG
  • 42. Run / Debug Configuration: Select Class and Method Set system property (if needed)
  • 43. OOPS… Failures  Check Test Failed  tackeScreenshot() Method will keep the site appearance when test failed  Check Exception  Check in log  Failures reasons: automation code issue/ dev changes / bug