SlideShare a Scribd company logo
www.fg.cz
Selenium Webdriver
Michal Franc - @michalfranc
2
O čem bude řeč?
Testování UI webové aplikace
End to End testy
Funkční / akceptační testy
Náhrada ručních testů - automatizace
3
Co je Selenium Webdriver
Webdriver
W3C specifikace protokolu pro vzdálené ovládání
prohlížeče - http://www.w3.org/TR/webdriver/
Selenium Webdriver 2.0
Nástupce Selenium RC
Poskytuje API pro webdriver
Java
JavaScript
Python
Ruby
C#
…
4
Alternativní nástroje
Sahi (JS,Java,Ruby)
http://sahipro.com/
CasperJS (JS)
http://casperjs.org/
WATIR (Ruby)
http://watir.com/
Capybara (Ruby)
https://github.com/jnicklas/capybara
5
Základní ukázka
6
API – přístup k DOM
org.openqa.selenium.SearchContext
org.openqa.selenium.By
7
API – čekání na DOM
org.openqa.selenium.support.ui.WebDriverWait
8
Před prvním testem
Co vlastně testovat a jaké testy?
Simulujeme uživatele (testera)
Testovací scénář
Reálné workflow
9
PageObject pattern
Pozor na rychlý začátek
Nedělejte to!
10
PageObject pattern
Cíl – vytvořit vrstvu nad obsahem na stránce
org.openqa.selenium.support.PageFactory
org.openqa.selenium.support.FindBy
11
PageObject pattern
12
PageObject pattern – rozšířit na komponenty
13
PageObject pattern - komponenty
Stránku rozložit na malé komponenty
14
PageObject pattern - komponenty
15
Reálný test - ukázka
16
JUnit - Organizace testů - Suite
17
JUnit – Organizace testů - Rule
18
Selenium Server
Vzdálený browser
org.openqa.selenium.remote.RemoteWebDriver
org.openqa.selenium.remote.DesiredCapabilities
Infrastruktura
Více browserů v různých verzích
Více systémů
Virtualizace vs licence windows
19
BrowserStack Automate
Selenium Grid infrastruktura
Podporované prohlížeče a systémy
FF, Chrome, IE, Opera, Safari
Windows XP, 7, 8, 8.1 / Mac OS X Snow Leopard, Lion,
Mountain Lion, Mavericks, Yosemite / Android / iOS
https://www.browserstack.com/list-of-browsers-and-
platforms?product=automate
20
BrowserStack Automate
21
Continuous Integration
Build pipeline
Change -> Commit -> Compile -> Unit tests -> Deploy to
test server -> IT tests -> UI test
22
Problémy
Stabilita
Kontrola předpokladů – fail fast
DOM – StaleElementException
Postranní info
Příprava prostředí
Testovací data
Paralelizace
Implementace WebDriver
Rozdíly mezi prohlížeči
Někdy nutné dělat ošklivé věci
Svádí ke zneužití
23
Dotazy
24
@michalfranc
@EdeeCMS
www.edee-cms.cz
www.fg.cz

More Related Content

ODP
Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...
PDF
Funkční testování – chybějící vrchol pyramidy (WebExpo 2016)
ODP
Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...
ODP
Barbora Urbancová - Testování v Seleniu
PPTX
Testování klientských Javascriptových aplikací
PDF
Selenium a WebDriver - přítomnost a budoucnost
PPTX
Selenium WebDriver - Test automation for web applications
PPTX
Introduction to Selenium Web Driver
Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...
Funkční testování – chybějící vrchol pyramidy (WebExpo 2016)
Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...
Barbora Urbancová - Testování v Seleniu
Testování klientských Javascriptových aplikací
Selenium a WebDriver - přítomnost a budoucnost
Selenium WebDriver - Test automation for web applications
Introduction to Selenium Web Driver

Viewers also liked (12)

PDF
Automation Testing using Selenium
PPTX
Využití NodeJS pro Javisty - jOpenSpace 2014
PDF
Selenium intro
PPTX
Exception handling in Java
PPT
Understanding Selenium/RC, Webdriver Architecture and developing the page obj...
PDF
Java Collections Framework
PDF
Java exception handling ppt
PPTX
Exception handling
PPS
Java Exception handling
PPT
Web Test Automation with Selenium
PPT
Selenium ppt
DOC
Manual testing interview question by INFOTECH
Automation Testing using Selenium
Využití NodeJS pro Javisty - jOpenSpace 2014
Selenium intro
Exception handling in Java
Understanding Selenium/RC, Webdriver Architecture and developing the page obj...
Java Collections Framework
Java exception handling ppt
Exception handling
Java Exception handling
Web Test Automation with Selenium
Selenium ppt
Manual testing interview question by INFOTECH
Ad

Similar to Selenium Webdriver - jOpenSpace 2015 (20)

PDF
Trendy a nové možnosti test automation
PDF
20110511 Vývoj software - produktivně, efektivně, kvalitně
PPTX
Qualys Application Programming Interface (API) (2011)
PDF
TechEd 2014 - MVC5
ODP
Představení Ruby on Rails
PPT
2009 X33EJA Moderní Technologie Pro Vývoj JEE
PPTX
WordPress REST API + React + TypeScript
PPT
2007 Technologie Pro Tvorbu Java Enterprise Aplikací
PPTX
TNPW2-2011-03
PPTX
atoto.cz - jak na snadnou integraci Codeception
PPTX
QualysGuard InfoDay 2014 - WAS
PPT
2011 X33EJA Výkonové Aspekty JEE Monitoring a optimalizace
PPTX
TNPW2-2012-03
PPTX
TNPW2-2013-03
PDF
INPTP Rekapitulace
PPTX
ASP.NET MVC
PPTX
ASP.NET MVC a TDD
PPTX
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...
PDF
vSphere automation workshop python
PPTX
Proč chcete testovat své aplikace
Trendy a nové možnosti test automation
20110511 Vývoj software - produktivně, efektivně, kvalitně
Qualys Application Programming Interface (API) (2011)
TechEd 2014 - MVC5
Představení Ruby on Rails
2009 X33EJA Moderní Technologie Pro Vývoj JEE
WordPress REST API + React + TypeScript
2007 Technologie Pro Tvorbu Java Enterprise Aplikací
TNPW2-2011-03
atoto.cz - jak na snadnou integraci Codeception
QualysGuard InfoDay 2014 - WAS
2011 X33EJA Výkonové Aspekty JEE Monitoring a optimalizace
TNPW2-2012-03
TNPW2-2013-03
INPTP Rekapitulace
ASP.NET MVC
ASP.NET MVC a TDD
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...
vSphere automation workshop python
Proč chcete testovat své aplikace
Ad

Selenium Webdriver - jOpenSpace 2015

Editor's Notes

  • #6: WebDriver driver = new HtmlUnitDriver(); WebDriver driver = new ChromeDriver(); WebDriver driver = new InternetExplorerDriver(); WebDriver driver = new FirefoxDriver(); // And now use this to visit Google driver.get("http://www.google.com"); // Find the text input element by its name WebElement element = driver.findElement(By.name("q")); // Enter something to search for element.sendKeys("Cheese!"); // Now submit the form. WebDriver will find the form for us from the element element.submit(); // Check the title of the page System.out.println("Page title is: " + driver.getTitle()); driver.quit();
  • #7: By.id(domId) By.className(cssClass) By.cssSelector(w3Selector) By.name(nameAttr) By.tagName(tagName) By.xpath(xpathExpression) By.linkText(anchorTagText)
  • #8: public WebElement waitUntilElementIsVisible(final By elementSpecifiedBy, final SearchContext ctx) { new WebDriverWait(driver,timeout) .ignoring(StaleElementReferenceException.class) .until( new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { return ctx.findElement(elementSpecifiedBy).isDisplayed(); } } ); return ctx.findElement(elementSpecifiedBy); }
  • #13: PageObject nutné rozšířit na komponenty, strom je komponenta, wysiwyg je komponenta, toolbar je komponenta ….
  • #20: Alternativy browserstack.com saucelabs.com testingbot.com
  • #22: Alternativy browserstack.com saucelabs.com testingbot.com
  • #23: Alternativy browserstack.com saucelabs.com testingbot.com
  • #24: Alternativy browserstack.com saucelabs.com testingbot.com