Selenide

ISsoft 1,186 views 27 slides Dec 27, 2013
Slide 1
Slide 1 of 27
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27

About This Presentation

No description available for this slideshow.


Slide Content

SELENIDE Andrei Solntsev

ОБО МНЕ Программер Codeborne DevClub.eu организатор Selenide.org автор

ОБО МНЕ

О НАС TDD Парное программирование Чистый код KISS Прогеры пишут и код, и тесты

Selenide Проблемы UI тестов Примеры Selenide АГЕНДА

Selenide = лаконичные и стабильные тесты (на Selenium WebDriver )

Лаконичные Читаемые Без мусора SELENIDE Сконцентрируйся на бизнес-логике!

selenide.org @Test public void userCanLogin () { open ( "/login" ); $ ( "# username" ). setValue ( " john" ); $ ( by( "type", "submit" )).click(); $ ( ". menu" ). shouldHave ( text ( "Hello, John!" )); } SELENIUM+API=SELENIDE

Нестабильные (Чёртов Ajax!) StaleElementException ElementNotFoundException Поддержка Архитектура SELENIDE ПОМОЖЕТ! Типичные проблемы UI- тестов

$ ( ". loading_progress " ). shouldBe ( visible ); $ ( "#menu" ). shouldHave (text ( "Hello, John!" )); $ (By.name( "sex" )). shouldNotBe ( selected ); FORGET THE AJAX! Решения : Ajax Все should- методы ЖДУТ при необходимости .

Ищите элементы по тексту import static com.codeborne.selenide.Selectors .*; $( byText ( "Hello, braza !" )). shouldBe (visible ); $( withText ( " raza " )) . shouldHave (text( "Hello, braza !" )); ДУМАЙ КАК ЮЗЕР! РЕШЕНИЯ: ПОДДЕРЖКА

РЕШЕНИЯ:АРХИТЕКТУРА ПАЦАН НАКОДИЛ --- ПАЦАН ПРОТЕСТИЛ!

Юнит-тесты Быстрые & стабильные -- МНОГО ЗАЛОГ УСПЕХА ant test ant uitest UI тесты Медленные & капризные -- МАЛО

SELENIDE VS SELENIUM WEBDRIVER

firefox chrome htmlunit phantomjs ie open( "/my-application/login" ); WEBDRIVER DesiredCapabilities cap = htmlUnit (); cap.setCapability (INVALIDSELECTIONERROR, true ); cap.setCapability (INVALIDXPATHERROR, false ); cap.setJavascriptEnabled ( true ); WebDriver driver = new HtmlUnitDriver (cap);

WebElement customer = WebElement customer = $( "# customerContainer " ); FIND ELEMENT driver.findElement (By.id( " customerContainer " ));

TEXT CHECK assertEquals ( "Customer profile" , driver.findElement ( By.id ( " customerContainer " )). getText ()); $( "# customerContainer " ). shouldHave ( text ( "Customer profile" ));

$( "# customerContainer " ). shouldHave ( text( "Customer profile" ), text( "John" ), cssClass ( "active-profile" )); MULTIPLE CHECKS

FluentWait <By> fluentWait = new FluentWait <By>( By.tagName ( "TEXTAREA" )); fluentWait.pollingEvery ( 100 , TimeUnit.MILLISECONDS ); fluentWait.withTimeout ( 1000 , TimeUnit.MILLISECONDS ); fluentWait.until ( new Predicate<By>() { public boolean apply(By by ) { try { return browser.findElement (by). isDisplayed (); } catch ( NoSuchElementException ex) { return false ; } } }); assertEquals ( "John" , browser.findElement ( By.tagName ( "TEXTAREA" )). getAttribute ( "value" )); AJAX SUPPORT

$( " TEXTAREA" ). shouldHave (value( "John" )); $( "#location" ). shouldHave (text( "Riga" )); $( ".logout" ). shouldNotBe (visible); $( ". logout" ).should(disappear); YEAH, IT WAITS! AJAX SUPPORT

$( "# customerContainer " ). shouldHave ( text( "Customer profile" ), attribute( "title" , "Profile" ), attribute( " readonly " ), cssClass ( "active-profile" )); MORE CHECKS

COLLECTIONS $$( "#boys tr " ). shouldHave (size( 1 )); $$( "#girls tbody tr " ). shouldHave ( texts( "Angelina" , " Veronika " , "Darlene" ));

SCREENSHOTS public class MyTest { @Rule public ScreenShooter photographer = ScreenShooter . failedTests () . succeededTests (); }

SCALA class CampaignsListSpec extends BeforeAndAfter { "User" can "see existing campaigns" in { $( ".header" ). shouldHave ( text( Labels.get ( " campaigns.title " ))) $$( "# existingCampaignsList tbody tr " ) . shouldHaveSize ( 2 ) } }

GROOVY

ДЕМО http://github.com/codeborne/selenide_examples

ПОЖАЛУЙСТА! Q & A http:// selenide.org [email protected]
Tags