Date post: | 23-Jan-2017 |
Category: |
Presentations & Public Speaking |
Upload: | tzirla-rozental |
View: | 110 times |
Download: | 4 times |
Automation Tests with Selenium
© By Tzirla Rozental
Agenda:What is QA Automation?What and How to Automate?Create ProjectCode Planning & DesignSelenium selectorsRun testFailures
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?
2. What is the interface that needs to be tested? (CLI, API, GUI ?)
? ?
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 UFTRecord and Playback Yes Limited Yes
Scripting Languages
Python, VBScript, JScript, C++, C#,
and Delphi
Java, C#, Ruby, Python, Perl, PHP ,
JavascriptVBScript
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 ,
JavascriptVBScript
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 java2. Install Eclipse and select Workspace3. Install Selenium (last version)
http://www.softwaretestinghelp.com/webdriver-eclipse-installation-selenium-tutorial-9/4. Install Maven (for Maven project) – From eclipse Marketplace5. Create a Maven Project6. Install TestNG and configure to right version – From eclipse Marketplace7. 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 MarketplaceIn 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 elementreturns list with one
element2+
matchesreturns only the first one
that foundreturns 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 MethodSet system property (if needed)
OOPS… FailuresCheck Test FailedtackeScreenshot() Method will keep the
site appearance when test failedCheck ExceptionCheck in logFailures reasons: automation code issue/
dev changes / bug
Good Luck!