Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Automated testing – Selenium #2             Peter Šimún             @petersimun
Zadefinujte si pravidlá!nedovoľte, aby sa porušovali  a váš život bude skvelý         jedine, že by nie
Pravidlo č.1: Shaolinských mníchov               Všetko neotestujete, aj              keď sa na hlavu postavíte
Pozor! Nasleduje kód!
Pravidlo č.2: Striktná a dôkladná architektúra                               Express your tests in the                    ...
Prihlásiť sa do synapsaPridať prázdnu stránkuPridať twitter komponent - @webelementPridať twitter komponent - @petersimunV...
loginSupport.login(new UsernamePasswordUser(Role.ADMIN));pageSupport.addBlankPage(newPage().randomize(seleniumSupport));Tw...
public class Twitter implements WebElement {    private String twitterAccount = "synapso";    private int twittsCounts = 5...
public class TwitterPage {    public By getTwitterSelector() {        return By.xpath("//div[contains(@class,twitterWidget...
public class UsernamePasswordLoginSupport implements LoginSupport{    @Override    public void login(UserData userData, La...
Nerobte pikoniny a nestestujte až keď horí
@petersimun         Seges s.r.o.Lombardíniho 20, 831 03 Bratislava   tel. +421 (0)2 206 333 69        office@seges.sk     ...
Upcoming SlideShare
Loading in …5
×

Selenium prezentácia pre Webelement

1,417 views

Published on

Prečo je písanie dlhodobo udržiavateľných testov dôležitejšie ako písanie udržiavateľného kódu? A ako vlastne na to? Prezentácia zľahka nadväzuje na predchádzájúcu prednášku (http://www.slideshare.net/petersimun/presentation-11002440) a popisuje odporúčané postupy a praktické ukážky toho, ako automatizovane testujeme interaktívne webové aplikácie, aké neštastia nás pritom postihli a ako sme z toho vykľučkovali.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Selenium prezentácia pre Webelement

  1. 1. Automated testing – Selenium #2 Peter Šimún @petersimun
  2. 2. Zadefinujte si pravidlá!nedovoľte, aby sa porušovali a váš život bude skvelý jedine, že by nie
  3. 3. Pravidlo č.1: Shaolinských mníchov Všetko neotestujete, aj keď sa na hlavu postavíte
  4. 4. Pozor! Nasleduje kód!
  5. 5. Pravidlo č.2: Striktná a dôkladná architektúra Express your tests in the language of the end-user of the app Ubiquitous Language Domain driven design
  6. 6. Prihlásiť sa do synapsaPridať prázdnu stránkuPridať twitter komponent - @webelementPridať twitter komponent - @petersimunVycentrovať twitter komponenty na stred stránkyPresunúť druhý twitter komponent (@petersimun) pred prvý twitter komponent(@webelement)Overiť výsledok na stránke – správne poradie twitter komponentov, pozícia nastránke Express your tests in the language of the end-user of the app
  7. 7. loginSupport.login(new UsernamePasswordUser(Role.ADMIN));pageSupport.addBlankPage(newPage().randomize(seleniumSupport));Twitter twitter_ps = new Twitter("petersimun");Twitter twitter_we = new Twitter("webelement");toolbarSupport.clickAndWait(Module.COMPONENT);twitterSupport.createTwitter (twitter_we);twitterSupport.centerTwitter(twitter_we);twitterSupport.createTwitter (twitter_ps);twitterSupport.centerTwitter(twitter_ps);twitterSupport.moveTwitterToPosition(twitter_we, newPosition(0, 100));
  8. 8. public class Twitter implements WebElement { private String twitterAccount = "synapso"; private int twittsCounts = 5; public Twitter (String twitterAccount) { this.twitterAccount = twitterAccount; } public String getTwitterAccount() { return twitterAccount; } public WebElement getTwitterElement() { return twitterElement; } obyčajné POJO predstavuje vstupné podmienky testu mapuje sa a zobrazuje na UI
  9. 9. public class TwitterPage { public By getTwitterSelector() { return By.xpath("//div[contains(@class,twitterWidget) and contains(@class,floatClear)]//ul"); } public By getTweetSelector(String source) { return By.xpath("//div[contains(@class,twitterWidget floatClear) and contains(@source," + source + ")]//ul//li[position() = 1]"); } public By getTwitterInputSelector() { return By.xpath("//div[contains(@class,acris-metal- dialog)]//input[contains(@class,gwt-Text)]"); }}reprezentuje UI komponenty pomocou selectorovak sa niečo zmení na UI, zmenu treba pravdepodobne reflektovať na tomtomiesteAk nechcete skončiť v pekle, nepoužívajte selectory v testoch alebo v supporttriedach!!
  10. 10. public class UsernamePasswordLoginSupport implements LoginSupport{ @Override public void login(UserData userData, Language language) { } @Override public void login(UserData user) { } @Override public void logout() { } ...}Písaný v jazyku zrozumiteľnom pre ľudí ( developer ≠ človek )Úzko komunikuje so selenium a zaobaluje znovupoužiteľnú funkcionalitu dometód
  11. 11. Nerobte pikoniny a nestestujte až keď horí
  12. 12. @petersimun Seges s.r.o.Lombardíniho 20, 831 03 Bratislava tel. +421 (0)2 206 333 69 office@seges.sk www.seges.sk

×