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
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
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
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.
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