tytuł oryginału: selenium testing tools cookbook, second ... · pdf fileautomatyzowanie...

36

Upload: hatuyen

Post on 03-Mar-2018

261 views

Category:

Documents


25 download

TRANSCRIPT

Page 1: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z
Page 2: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Tytuł oryginału: Selenium Testing Tools Cookbook, Second Edition

Tłumaczenie: Radosław Meryk

ISBN: 978-83-283-3411-3

Copyright © Packt Publishing 2015

First published in the English language under the title 'Selenium Testing Tools Cookbook - Second Edition - (9781784392512)'

Polish edition copyright © 2017 by Helion SAAll rights reserved.

All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher.

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji.

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.

Wydawnictwo HELIONul. Kościuszki 1c, 44-100 GLIWICEtel. 32 231 22 19, 32 230 98 63e-mail: [email protected]: http://helion.pl (księgarnia internetowa, katalog książek)

Drogi Czytelniku!Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/seler2Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.

Printed in Poland.

• Kup książkę• Poleć książkę • Oceń książkę

• Księgarnia internetowa• Lubię to! » Nasza społeczność

Page 3: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Spis tre ci

O autorze 7

O recenzentach 9

Przedmowa 11

Rozdzia 1. Od czego zacz ? 17

Wprowadzenie 17Konfigurowanie rodowiska tworzenia testów Selenium WebDriver

dla j zyka Java z Eclipse i Maven 18Wykorzystanie narz dzia Ant do egzekucji testów Selenium WebDriver 26Konfigurowanie programu Microsoft Visual Studio

do tworzenia testów Selenium WebDriver 29Konfigurowanie frameworka Selenium WebDriver dla Pythona i Ruby 32Konfiguracja programu Internet Explorer Driver Server 36Konfiguracja sterownika ChromeDriver przegl darki Google Chrome 40Konfiguracja sterownika Microsoft WebDriver dla przegl darki Microsoft Edge 43

Rozdzia 2. Wyszukiwanie elementów 47

Wprowadzenie 47Wykorzystywanie narz dzi przegl darki do badania elementów i struktury strony 48Wyszukiwanie elementu za pomoc metody findElement 54Wyszukiwanie wielu elementów za pomoc metody findElements 59Wyszukiwanie linków 60Wyszukiwanie elementów na podstawie nazwy znacznika 61Wyszukiwanie elementów z wykorzystaniem XPath 62Wyszukiwanie elementów na podstawie selektorów CSS 70Lokalizowanie elementów na podstawie tekstu 74Wyszukiwanie elementów na podstawie zaawansowanych selektorów CSS 76Wykorzystanie selektorów jQuery 78

Poleć książkęKup książkę

Page 4: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Spis tre ci

4

Rozdzia 3. Obs uga elementów HTML 81

Wprowadzenie 81Automatyzowanie pól tekstowych, obszarów tekstowych i przycisków 82Sprawdzanie tekstu elementu 84Sprawdzanie atrybutów elementu i warto ci CSS 86Automatyzowanie rozwijanych menu i list 87Zaznaczanie opcji w elementach Select 90Zaznaczanie wybranych opcji na rozwijanych menu i listach 92Automatyzacja prze czników i grup opcji 95Automatyzowanie pól wyboru 97Praca z obiektami WebTable 99

Rozdzia 4. Korzystanie z Selenium API 101

Wprowadzenie 101Sprawdzanie istnienia elementu 102Sprawdzanie stanu elementu 103Wykorzystanie API Advanced User Interactions do obs ugi zdarze myszy i klawiatury 104Wykonywanie dwukrotnych klikni elementów 106Wykonywanie operacji „przeci gnij i upu ” 108Obs uga menu kontekstowych 109Wykonywanie kodu JavaScript 111Przechwytywanie zrzutów ekranu za pomoc Selenium WebDriver 113Maksymalizowanie okna przegl darki 115Obs uga plików cookie sesji 115Korzystanie z mechanizmów nawigacji przegl darki 117Korzystanie ze zdarze frameworka WebDriver 118

Rozdzia 5. Synchronizacja testów 123

Wprowadzenie 123Synchronizacja testów z niejawnym oczekiwaniem 124Synchronizacja testów z jawnym oczekiwaniem 125Synchronizacja testów z niestandardowymi warunkami oczekiwanymi 127Synchronizacja testów z wykorzystaniem klasy FluentWait 130

Rozdzia 6. Alerty, ramki i okna 133

Wprowadzenie 133Obs uga prostych okien alertów JavaScript 133Obs uga okien confirm i prompt 136Identyfikowanie i obs uga ramek 139Ramki iframe 144Identyfikowanie i obs uga okien potomnych 146Identyfikowanie i obs uga okien na podstawie tytu u 148Identyfikowanie i obs uga wyskakuj cych okien na podstawie zawarto ci 150

Poleć książkęKup książkę

Page 5: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Spis tre ci

5

Rozdzia 7. Testowanie sterowane danymi 153

Wprowadzenie 153Tworzenie testów sterowanych danymi z wykorzystaniem JUnit 155Tworzenie testów sterowanych danymi z wykorzystaniem frameworka TestNG 159Odczytywanie danych testowych z pliku CSV z wykorzystaniem JUnit 161Odczytywanie danych testowych z pliku Excela z wykorzystaniem JUnit i Apache POI 164Tworzenie testów sterowanych danymi z wykorzystaniem NUnit 167Tworzenie testów sterowanych danymi z wykorzystaniem MSTEST 171Tworzenie testów sterowanych danymi w Ruby z wykorzystaniem Roo 175Tworzenie testów sterowanych danymi w Pythonie z wykorzystaniem DDT 179

Rozdzia 8. Korzystanie ze wzorca Page Object 181

Wprowadzenie 181Korzystanie z klasy PageFactory do udost pniania elementów na stronie 182Korzystanie z klasy PageFactory do udost pniania operacji na stronie 186Korzystanie z klasy LoadableComponent 189Implementacja zagnie d onych egzemplarzy klasy Page Object 192Implementacja modelu Page Object w rodowisku .NET 197Implementacja modelu Page Object w Pythonie 200Implementacja modelu Page Object w Ruby z wykorzystaniem gemu page-object 203

Rozdzia 9. Rozszerzanie Selenium 205

Wprowadzenie 205Tworzenie klas rozszerze dla tabel webowych 206Tworzenie rozszerzenia dla wid etu tab biblioteki jQueryUI 210Implementacja rozszerzenia klasy WebElement

w celu ustawiania warto ci atrybutów elementów 214Implementacja rozszerzenia interfejsu WebElement w celu wyró niania elementów 216Utworzenie mapy obiektów dla testów Selenium 217Przechwytywanie zrzutów ekranu elementów w Selenium WebDriver 223Porównywanie obrazów w Selenium 224Mierzenie wydajno ci z wykorzystaniem API Navigation Timing 229

Rozdzia 10. Testowanie aplikacji webowych HTML5 233

Wprowadzenie 233Automatyzowanie odtwarzacza wideo HTML5 234Automatyzowanie interakcji z elementem HTML5 canvas 237Web storage — testowanie lokalnego magazynu 239Web storage — testowanie pami ci sesji 241Czyszczenie magazynu lokalnego i magazynu sesji 243

Poleć książkęKup książkę

Page 6: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Spis tre ci

6

Rozdzia 11. BDD — tworzenie oprogramowania sterowane zachowaniami 245

Wprowadzenie 245Wykorzystanie technik BDD w Javie za pomoc biblioteki Cucumber-JVM

i frameworka Selenium WebDriver 246Wykorzystanie technik BDD w rodowisku .NET za pomoc biblioteki SpecFlow.NET

i frameworka Selenium WebDriver 255Wykorzystanie biblioteki Capybara, Cucumber i frameworka Selenium WebDriver w Ruby 264Wykorzystanie biblioteki Behave i frameworka Selenium WebDriver w Pythonie 267

Rozdzia 12. Integracja z innymi narz dziami 271

Wprowadzenie 271Konfigurowanie systemu ci g ej integracji Jenkins 272Wykorzystanie systemów Jenkins i Maven do egzekucji testów Selenium WebDriver

w rodowisku ci g ej integracji 274Wykorzystanie systemu Ant do uruchamiania testów Selenium WebDriver 279Wykorzystanie systemów Jenkins i Ant do uruchamiania testów Selenium WebDriver

w rodowisku ci g ej integracji 281Automatyzacja aplikacji z niewebowymi interfejsami u ytkownika

z wykorzystaniem Selenium WebDriver oraz AutoIt 286Automatyzacja aplikacji z niewebowymi interfejsami u ytkownika

z wykorzystaniem Selenium WebDriver oraz Sikuli 293

Rozdzia 13. Testy dla wielu przegl darek 297

Wprowadzenie 297Konfigurowanie programu Selenium Grid Server do pracy

w trybie równoleg ego uruchamiania testów 299Dodawanie w z ów do siatki Selenium Grid w celu testowania ró nych przegl darek 301Tworzenie i wykonywanie skryptu Selenium równolegle z TestNG 304Tworzenie i równoleg e wykonywanie skryptu Selenium z wykorzystaniem j zyka Python 310Wykorzystanie narz dzi w chmurze do testowania ró nych przegl darek

i uruchamiania testów w chmurze 313Uruchamianie testów w trybie headless z wykorzystaniem PhantomJS 316

Rozdzia 14. Testowanie aplikacji w przegl darkach mobilnych 319

Wprowadzenie 319Konfigurowanie Appium do testowania aplikacji mobilnych 320Testowanie mobilnych aplikacji webowych w systemie iOS z wykorzystaniem Appium 322Testowanie mobilnych aplikacji webowych w systemie Android

z wykorzystaniem Appium 325

Skorowidz 331

Poleć książkęKup książkę

Page 7: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

4

Korzystaniez Selenium API

Oto zagadnienia, jakie zostan omówione w tym rozdziale. Sprawdzanie istnienia elementu. Sprawdzanie stanu elementu. Wykorzystanie API zaawansowanych interakcji u ytkownika (ang. Advanced User

Interactions) do obs ugi zdarze myszy i klawiatury. Wykonywanie podwójnych klikni elementu. Wykonywanie operacji „przeci gnij i upu ”. Obs uga menu kontekstowych. Wykonywanie kodu JavaScript. Przechwytywanie zrzutów ekranu za pomoc Selenium WebDriver. Maksymalizowanie okna przegl darki. Obs uga plików cookie sesji. Obs uga mechanizmów nawigacji przegl darki. Korzystanie ze zdarze klasy WebDriver.

WprowadzenieSelenium WebDriver implementuje kompleksowe API do pracy z elementami webowymi, któreumo liwia wykonywanie zaawansowanych interakcji z u ytkownikiem, takich jak z o onezdarzenia zwi zane z mysz i klawiatur , wykonywanie kodu JavaScript, przechwytywaniezrzutów ekranu i tak dalej.

Poleć książkęKup książkę

Page 8: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Selenium i testowanie aplikacji. Receptury

102

W tym rozdziale omówi sposób wykorzystania tych w asno ci do budowania kroków testówo ró nym poziomie z o ono ci. Lektura rozdzia u pomo e równie w przezwyci eniu niektórychtypowych problemów, które mog powstawa podczas tworzenia testów bazuj cych na framewor-ku Selenium WebDriver.

Sprawdzanie istnienia elementuSelenium WebDriver nie implementuje metody Selenium RC isElementPresent(), którasprawdza, czy element istnieje na stronie. Metoda jest przydatna do budowania niezawodnegotestu, który móg by sprawdzi istnienie elementu przed wykonaniem na nim jakiegokolwiekdzia ania.

W tej recepturze napisz metod podobn do metody isElementPresent().

Jak to zrobi ?Aby zaimplementowa metod isElementPresent(), wykonaj nast puj ce czynno ci.

1. Utwórz metod isElementPresent() w module dost pnym do testów i umiew niej nast puj cy kod.

{{Private boolean isElementPresent(By by) try { driver.findElement(by); return true; } catch {} (NoSuchElementException e) return false; }}

2. Teraz utwórz kod testu, który wywo uje metod isElementPresent(). Metoda b dziesprawdza , czy dany element istnieje na stronie. Je li b dzie znaleziony, zostaniewykonane klikni cie elementu, w przeciwnym razie test nie przejdzie. Mo na to zrobiw nast puj cy sposób.

@TestPublic void testIsElementPresent() {} // Sprawdzenie, czy element spe niaj cy kryteria lokalizatora istnieje na stronie if (isElementPresent(By.name("airbags"))) { // Utwórz reprezentacj pola wyboru i zaznacz je WebElement airbag = driver.findElement(By.name("airbags")); if (!airbag.isSelected()) { airbag.click(); } } else { fail("Pole wyboru poduszki powietrznej nie istnieje!!"); }}

Poleć książkęKup książkę

Page 9: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Rozdzia 4. • Korzystanie z Selenium API

103

Jak to dzia a?Metoda isElementPresent() pobiera argument lokalizatora z wykorzystaniem egzemplarza klasy By.Nast pnie wywo uje metod findElement(). Je li element nie zostanie znaleziony, b dzie zg oszo-ny wyj tek NoSuchElementException. Dzi ki u yciu bloku try i catch metoda isElementPresent()zwróci true, gdy element zostanie znaleziony. W tym przypadku nie zostanie zg oszony wyj tek.W przeciwnym razie zwróci false, a metoda findElement() zg osi wyj tek NoSuchElementException.

Zobacz te Receptura „Sprawdzanie stanu elementu”.

Sprawdzanie stanu elementuWielokrotnie zdarza si , e próba klikni cia elementu lub wprowadzenia tekstu w polu zawodzize wzgl du na to, e element jest wy czony lub istnieje w modelu DOM, ale jest ukryty nastronie. To powoduje zg oszenie b du i niepowodzenie testu. Zbudowanie wiarygodnych testów,które mo na uruchomi w trybie nienadzorowanym, wymaga utworzenia w przep ywie testówsolidnego mechanizmu obs ugi b dów i wyj tków.

Powstaj ce problemy mo na obs u y , sprawdzaj c stan elementów. Interfejs WebElementudost pnia nast puj ce metody sprawdzania stanu elementu.

Metoda Przeznaczenie

isEnabled() Metoda sprawdza, czy element jest aktywny. Zwraca true, je li jest aktywny, i false w przypadkuprzeciwnym.

isSelected() Metoda sprawdza, czy element (prze cznik, pole wyboru i tak dalej) jest zaznaczony. Zwracatrue, je li jest zaznaczony, i false w przypadku przeciwnym.

isDisplayed() Metoda sprawdza, czy element jest wy wietlany.

W tej recepturze zastosuj niektóre z wymienionych metod w celu sprawdzenia stanu elementówi obs ugi b dów, je li to mo liwe.

Jak to zrobi ?Utworzymy test, w ramach którego sprawdzimy, czy na stronie zosta o zaznaczone pole wyboruw czaj ce reflektor LED. To pole wyboru b dzie w czone lub wy czone, w zale no ci od wcze-niej wybranych opcji. Przed zaznaczeniem tego pola wyboru upewnimy si , czy jest ono

aktywne. Mo na to zrobi w nast puj cy sposób.

Poleć książkęKup książkę

Page 10: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Selenium i testowanie aplikacji. Receptury

104

@TestPublic void testElementIsEnabled() {} // Utworzenie reprezentacji pola wyboru w postaci obiektu WebElement z wykorzystaniem atrybutu name WebElement ledheadlamp = driver.findElement(By.name("ledheadlamp")); // Sprawdzenie, czy element jest aktywny przed jego zaznaczeniem if (ledheadlamp.isEnabled()) { // Sprawdzenie, czy pole wyboru ju jest zaznaczone. W przeciwnym razie zaznaczenie go if (!ledheadlamp.isSelected()) { ledheadlamp.click(); } } else { fail("Pole wyboru reflektora LED jest nieaktywne!!"); }}

Jak to dzia a?Zaznaczamy pole wyboru, sprawdzaj c dwa stany elementu; po pierwsze, czy pole to jest aktywne,i po drugie, czy ju nie jest zaznaczone. Do tego celu mo emy u y funkcji isEnabled()interfejsu WebElement, która zwraca true, je li element jest aktywny, lub false, gdy jest nieaktyw-ny. Je li pole wyboru jest nieaktywne, test zako czy si niepowodzeniem. Kiedy nie sprawdzi-my tego warunku, test prawdopodobnie zg osi wyj tek informuj cy o tym, e obiekt jest nieak-tywny, tak jak pokazano poni ej.

// Sprawdzenie, czy element jest aktywny przed jego zaznaczeniemif (ledheadlamp.isEnabled()) { // Sprawdzenie, czy pole wyboru jest ju zaznaczone. W przeciwnym razie zaznaczenie pola wyboru if (!ledheadlamp.isSelected()) { ledheadlamp.click(); }} else { fail("Pole wyboru reflektora LED jest nieaktywne!!");}

Wykorzystanie API Advanced UserInteractions do obs ugi zdarzemyszy i klawiaturyAPI Advanced User Interactions frameworka Selenium WebDriver pozwala wykonywa zarównoproste, jak i z o one operacje obs ugi zdarze klawiatury i myszy. Klasa Actions udost pniatak z o one operacje jak „przeci gnij i upu ”, czy przytrzymanie klawisza, a nast pnie wykonanieoperacji mysz . API umo liwia tak e budowanie z o onych a cuchów zdarze imituj cychdzia ania r cznie wykonywane przez u ytkownika.

Poleć książkęKup książkę

Page 11: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Rozdzia 4. • Korzystanie z Selenium API

105

W celu utworzenia z o onych dzia a obejmuj cych grup innych dzia a klasa Actions imple-mentuje wzorzec „budowniczy”.

W tej recepturze u yj klasy Actions do utworzenia a cucha zdarze wymaganych do zaznacze-nia wierszy w tabeli.

Jak to zrobi ?Utwórzmy test, który zaznacza wiele wierszy z ró nych pozycji w tabeli za pomoc klawisza Ctrl(w komputerach Mac Command). Mo emy wybra wiele wierszy: zaznaczamy pierwszy wiersz,przytrzymujemy klawisz Ctrl (Command na komputerach Mac), a nast pnie wybieramy innywiersz i zwalniamy klawisz Ctrl (Command). Takie dzia anie spowoduje zaznaczenie danychwierszy z tabeli, tak jak pokazano w poni szym fragmencie kodu.

@Testpublic void testRowSelectionUsingControlKey() {

List<WebElement> tableRows = driver.findElements (By.xpath("//table[@class='iceDatTbl']/tbody/tr"));

// Zaznacz drugi i czwarty wiersz w tabeli za pomoc klawisza Control. //Wiersze rozpoczynaj si od indeksu 0 Actions builder = new Actions(driver); builder.click(tableRows.get(1)) .keyDown(Keys.CONTROL) .click(tableRows.get(3)) .keyUp(Keys.CONTROL) .build().perform();

// Sprawdzenie, czy w tabeli s zaznaczone dwa wierszeList<WebElement> rows = driver.findElements (By.xpath("//div[@class='icePnlGrp exampleBox']/table[@class='iceDatTbl']/tbody/tr"));assertEquals(2,rows.size());}

W komputerach z systemem Mac OS X nale y u y sk adni klawisza Command zamiast sk adni klawiszaControl. Oto przyk ad.

Actions builder = new Actions(driver);builder.click(tableRows.get(1)).keyDown(Keys.COMMAND) click(tableRows.get(3)).keyUp(Keys.COMMAND).perform();}

Jak to dzia a?Nale y utworzy egzemplarz klasy Actions, przekazuj c do konstruktora egzemplarz klasy driverw nast puj cy sposób.

Actions builder = new Actions(driver);

Poleć książkęKup książkę

Page 12: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Selenium i testowanie aplikacji. Receptury

106

Zbudujemy a cuch zdarze , które nale y wykona , aby zaznaczy wiersze. B dzie to wymaga owykonania operacji click() na pierwszym wierszu, nast pnie przytrzymania klawisza Ctrl(Command w systemie Mac) przy u yciu operacji keyDown(), klikni cia wiersza ko cowego, a na-st pnie zwolnienia klawisza Ctrl (Command) przez wywo anie keyUp(). Klasa Actions oferujeró ne metody do wykonywania operacji z klawiatur i mysz .

Actions builder = new Actions(driver);builder.click(tableRows.get(1)).keyDown(Keys.CONTROL) .click(tableRows.get(3)).keyUp(Keys.CONTROL) .build().perform();

Mo emy utworzy z o one dzia ania, które wykonamy przy u yciu wywo ania metody perform()klasy Actions.

Klasa Keys reprezentuje wszystkie nietekstowe klawisze na klawiaturze, na przyk ad klawisz Ctrl,klawisz Shift, klawisze funkcyjne i tak dalej. W poprzednim przyk adzie u yli my wywo aniakeyDown(Keys.CONTROL) w celu naci ni cia i przytrzymania klawisza Ctrl (Command) a do zako -czenia nast pnej operacji.

Dzia ania mog nie uruchamia si poprawnie w przypadku elementów, które nie s widoczne lub snieaktywne. Przed u yciem opisanych zdarze nale y zadba o to, aby elementy by y widoczne i aktywne.

Zobacz te Receptura „Wykonywanie dwukrotnych klikni elementów”.

Wykonywanie dwukrotnych kliknielementówW aplikacjach webowych s elementy, które do wykonania niektórych czynno ci wymagajdwukrotnych klikni . Przyk adowo dwukrotne klikni cie wiersza tabeli powoduje wy wietlenienowego okna. API Advanced User Interaction dostarcza metod umo liwiaj c wykonywaniedwukrotnych klikni .

W tej recepturze do wykonywania operacji dwukrotnego klikni cia u yj klasy Actions.

Jak to zrobi ?Utwórzmy test lokalizuj cy element, dla którego zaimplementowano zdarzenie dwukrotnegoklikni cia. Dwukrotne klikni cie tego elementu spowoduje zmian jego koloru.

Poleć książkęKup książkę

Page 13: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Rozdzia 4. • Korzystanie z Selenium API

107

package com.secookbook.examples.chapter04;

import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.By;import org.openqa.selenium.interactions.Actions;import static org.junit.Assert.*;import org.junit.Test;

public class DoubleClickTest { @Test public void testDoubleClick() throws Exception { WebDriver driver = new ChromeDriver(); driver.get("http://cookbook.seleniumacademy.com/DoubleClickDemo.html");

try { WebElement message = driver.findElement(By.id("message"));

// Sprawdzenie, czy element jest niebieskiego koloru assertEquals("rgba(0, 0, 255, 1)", message. getCssValue("background-color"));

Actions builder = new Actions(driver); builder.doubleClick(message).perform();

// Sprawdzenie, czy element jest ó tego koloru assertEquals("rgba(255, 255, 0, 1)", message. getCssValue("background-color")); } finally { driver.quit(); } }}

Jak to dzia a?Aby wykona dwukrotne klikni cie elementu, nale y wywo a metod doubleClick() klasyActions. W celu wywo ania tej metody trzeba utworzy egzemplarz klasy Actions, tak jak poka-zano poni ej.

Actions builder = new Actions(driver);

Metoda doubleClick() wymaga elementu, na którym zostanie zainicjowane zdarzenie dwukrotnegoklikni cia. Metod doubleClick() mo na wywo a , przekazuj c element w nast puj cy sposób.

builder.doubleClick(message).perform();

Poleć książkęKup książkę

Page 14: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Selenium i testowanie aplikacji. Receptury

108

Zobacz te Receptura „Wykorzystanie API Advanced User Interactions do obs ugi zdarze

myszy i klawiatury”, Receptura „Wykonywanie operacji «przeci gnij i upu »”.

Wykonywanie operacji „przeci gnij i upu ”Selenium WebDriver, za po rednictwem klasy Actions, implementuje polecenie Selenium RCdragAndDrop. Klasa Actions, jak pokazywa em we wcze niejszych recepturach, obs uguje zaawan-sowane interakcje u ytkownika, takie jak wyzwalanie zdarze myszy i klawiatury. Za po rednic-twem tej klasy mo na budowa proste lub z o one a cuchy zdarze .

W tej recepturze wykorzystam klas Actions do wykonywania operacji „przeci gnij i upu ”.

Jak to zrobi ?Zaimplementujemy test, który za pomoc klasy Actions wykona na stronie operacj „przeci gniji upu ”.

@TestPublic void testDragDrop() {} Driver.get ("http://cookbook.seleniumacademy.com/DragDropDemo.html");

WebElement source = driver.findElement(By.id("draggable")); WebElement target = driver.findElement(By.id("droppable"));

Actions builder = new Actions(driver); builder.dragAndDrop(source, target) .perform(); assertEquals("Upuszczono!", target.getText());}

Jak to dzia a?Aby przeci gn element na inny element i go na nim upu ci , trzeba zlokalizowa oba elementyi przekaza je do metody dragAndDrop() klasy Actions. eby wywo a t metod , nale y utworzyegzemplarz klasy Actions w nast puj cy sposób.

Actions builder = new Actions(driver);

Metoda dragAndDrop() wymaga elementu ród owego oraz elementu docelowego, na któryelement ród owy zostanie przeci gni ty i upuszczony. Metod dragAndDrop() mo na wywo aw nast puj cy sposób.

builder.dragAndDrop(source, target).perform();

Poleć książkęKup książkę

Page 15: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Rozdzia 4. • Korzystanie z Selenium API

109

W czasie powstawania tej ksi ki framework Selenium WebDriver nie obs ugiwa operacji „przeci gnij i upu ”dla HTML5. Wi cej informacji na ten temat mo na znale pod adresem https://code.google.com/p/selenium/issues/detail?id=3604. Istnieje obej cie umo liwiaj ce symulacj w asno ci „przeci gnij i upu ”w aplikacjach webowych bazuj cych na HTML5. Wi cej szczegó ów na ten temat mo na znale podadresem https://gist.github.com/rcorreia/2362544.

Zobacz te Receptura „Wykorzystanie API Advanced User Interactions do obs ugi zdarze

myszy i klawiatury”, Receptura „Wykonywanie dwukrotnych klikni elementów”.

Obs uga menu kontekstowychMenu kontekstowe (znane tak e jako menu skrótów, wyskakuj ce menu lub menu podr czne)to lista polece wy wietlanych na stronie WWW w odpowiedzi na klikni cie elementu prawymprzyciskiem myszy. Przyk adowo pod adresem http://bit.ly/1CAV05I zamieszczono kod korzystaj -cy z wtyczki jQuery contextMenu, który wy wietla menu edycji, gdy u ytkownik kliknie przyciskprawym przyciskiem myszy.

Klasa Actions frameworka Selenium WebDriver dostarcza metod contextClick(), która po-zwala wykona operacj klikni cia prawym przyciskiem myszy. W tej recepturze poka ,w jaki sposób zautomatyzowa interakcje z menu kontekstowymi.

Jak to zrobi ?Spróbujmy zaimplementowa test, który otworzy menu kontekstowe i, korzystaj c z klasy Actions,wybierze jedn z opcji.

@TestPublic void testContextMenu() {} WebElement clickMeElement = driver.findElement (By.cssSelector ("div.context-menuone.Box.menu-1 ")); WebElement editMenuItem = driver.findElement (By.cssSelector ("li.context-menuitem.icon-edit"));

Actions builder = new Actions(driver); builder.contextClick(clickMeElement) .moveToElement(editMenuItem) .Click() .perform();

WebDriverWait wait = new WebDriverWait(driver, 10);

Poleć książkęKup książkę

Page 16: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Selenium i testowanie aplikacji. Receptury

110

Alert alert = wait.until(ExpectedConditions.alertIsPresent()); assertEquals("clicked: edit", alert.getText()); alert.dismiss();}

Jak to dzia a?Do otwarcia menu kontekstowego w odpowiedzi na klikni cie prawym przyciskiem myszys u y metoda contextClick() klasy Actions. Poni szy kod wykonuje klikni cie prawym przyci-skiem myszy podanego elementu.

WebElement clickMeElement = driver.findElement(By.cssSelector("div.context-menuone.box.menu-1")); WebElement editMenuItem = driver.findElement(By.cssSelector("li.context-menuitem.icon-edit"));

Actions builder = new Actions(driver); builder.contextClick(clickMeElement) .moveToElement(editMenuItem) .click()

.perform();

Nast pnie mo na przej do danego elementu — w tym przypadku jest nim element <li>, któryreprezentuje jedn z opcji menu. Aby wykona akcj menu, wywo ywana jest metoda click().W tym przyk adzie wywo anie metody click() powoduje wy wietlenie alertu, a test sprawdzakomunikat w oknie alertu.

Co dalej?W poprzednim przyk adzie test wyszukuje pozycj menu, a nast pnie wykonuje operacj klikni -cia. Czasami w menu s dost pne klawisze skrótów. Za po rednictwem klasy Actions mo nawykorzysta kombinacj zdarze myszy i naci ni klawiszy w celu otwarcia danej opcji menu.Przyk adowo klawiszem skrótu dla pozycji menu Edit jest „e”. Mo emy otworzy menu kontek-stowe, a nast pnie wys a kombinacj klawiszy Alt+E w nast puj cy sposób.

@Testpublic void testContextMenuWithKeys() { WebElement clickMeElement = driver.findElement(By.cssSelector("div.context-menu-one.box.menu-1"));

Actions builder = new Actions(driver); builder.contextClick(clickMeElement) .sendKeys(Keys.chord(Keys.ALT, "e")) .perform();

Poleć książkęKup książkę

Page 17: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Rozdzia 4. • Korzystanie z Selenium API

111

WebDriverWait wait = new WebDriverWait(driver, 10);

Alert alert = wait.until(ExpectedConditions.alertIsPresent()); assertEquals("clicked: edit", alert.getText()); alert.dismiss();}

Zobacz te Receptura „Wykorzystanie API Advanced User Interactions do obs ugi zdarze

myszy i klawiatury”.

Wykonywanie kodu JavaScriptAPI Selenium WebDriver zapewnia mo liwo wykonywania w oknie przegl darki koduJavaScript. Jest to bardzo przydatna funkcja, w przypadku gdy testy musz wykonywa operacjena stronie przy u yciu JavaScript. Dzi ki temu API frameworka Selenium WebDriver mo eby wykorzystane równie do testowania kodu JavaScript po stronie klienta. Selenium WebDriveroferuje interfejs JavascriptExecutor, który mo e s u y do uruchamiania dowolnego koduJavaScript w kontek cie przegl darki.

W tej recepturze poka , w jaki sposób u ywa interfejsu JavascriptExecutor do uruchamia-nia kodu JavaScript. W tej ksi ce zamieszczono ró ne receptury, w których wykorzystanointerfejs JavascriptExecutor do wykonywania niektórych zaawansowanych operacji, które nies jeszcze obs ugiwane przez Selenium WebDriver.

Jak to zrobi ?Utwórzmy test, który wywo uje kod JavaScript w celu zwrócenia tytu u i liczby linków (tzn. liczbytagów Anchor). Aby zwróci tytu strony, mo na równie wykorzysta metod driver.getTitle().Poni ej przedstawiono przyk adowy kod takiego dzia ania.

@Testpublic void testJavaScriptCalls() throws Exception { WebDriver driver = new ChromeDriver(); driver.get("http://www.google.com"); try { JavascriptExecutor js = (JavascriptExecutor) driver;

String title = (String) js.executeScript("return document.title"); assertEquals("Google", title);

long links = (Long) js

Poleć książkęKup książkę

Page 18: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Selenium i testowanie aplikacji. Receptury

112

.executeScript("var links = document. getElementsByTagName('A'); return links.length"); assertEquals(42, links); } finally { driver.quit(); }}

Jak to dzia a?Zrzutowanie egzemplarza WebDriver na interfejs JavascriptExecutor pozwala wykona w Sele-nium WebDriver kod JavaScript.

JavascriptExecutor js = (JavascriptExecutor) driver;

W poni szym przyk adzie uruchomiono pojedynczy wiersz kodu JavaScript, który zwracatytu strony wy wietlanej przez sterownik. Interfejs JavascriptExecutor dostarcza metodexecuteScript(), do której nale y przekaza kod JavaScript.

String title = (String) js.executeScript("return document.title");

Podczas zwracania warto ci z kodu JavaScript trzeba u y s owa kluczowego return. Wynik metodyexecuteScript()trzeba zrzutowa na podstawie typu zwróconej warto ci. Dla warto ci dziesi tnychmo na u y typu Double, niedziesi tne warto ci liczbowe wymagaj u ycia typu Long, natomiast dlawarto ci logicznych nale y stosowa typ Boolean. Je li kod JavaScript zwraca element HTML, mo nawykorzysta typ WebElement. Dla warto ci tekstowych nale y skorzysta z typu String. Je li jest zwraca-na lista obiektów, mo na zastosowa dowolny z wymienionych typów, w zale no ci od typu obiektów nali cie. W przeciwnym razie zostanie zwrócona warto null.

W poni szym przyk adzie w celu pobrania liczby linków na stronie uruchomiono wielowierszowykod JavaScript.

long links = (Long) js.executeScript("var links = document.getElementsByTagName('A'); return links.length");

Co dalej?Do kodu JavaScript uruchamianego za pomoc metody executeScript() mog by przekazywa-ne argumenty. W poni szym przyk adzie chcemy ustawi warto elementu. Wewn trz koduJavaScript zostanie wykorzystana specjalna tablica arguments, tak jak pokazano w poni szymkodzie.

js.executeScript("document.getElementByID('name').value = arguments[0]","Jan");

Poleć książkęKup książkę

Page 19: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Rozdzia 4. • Korzystanie z Selenium API

113

Przechwytywanie zrzutów ekranuza pomoc Selenium WebDriverSelenium WebDriver dostarcza interfejs TakesScreenshot, który umo liwia przechwytywaniezrzutów ekranu stron internetowych. Pomaga to podczas uruchamiania testu, poniewa pokazuje,co dok adnie si sta o, gdy zosta zg oszony wyj tek lub wyst pi b d podczas uruchamiania.Mo na równie przechwytywa zrzuty ekranu podczas weryfikacji stanu elementu, warto ciwy wietlanych wewn trz elementów lub stanu po zako czeniu dzia ania.

Przechwytywanie zrzutów ekranu pomaga tak e w weryfikacji takich obszarów jak uk ad stronyczy sposób wyrównania pól, kiedy porównywane s zrzuty ekranu wykonane podczas dzia aniatestów z ilustracjami bazowymi.

W tej recepturze u yj interfejsu TakesScreenshot do wykonania zrzutu ekranu testowanejstrony WWW.

Jak to zrobi ?Utwórzmy test, który otworzy aplikacj testow i wykona zrzut ekranu strony w formacie PNG(ang. Portable Network Graphics), tak jak pokazano w poni szym przyk adowym kodzie.

@Testpublic void testTakesScreenshot() throws Exception { File scrFile = ((TakesScreenshot) driver) .getScreenshotAs(OutputType.FILE); FileUtils.copyFile(scrFile, new File("target/main_page.png"));}

Jak to dzia a?Interfejs TakesScreenshot dostarcza metod getScreenshotAs(), która pozwala przechwycizrzut ekranu strony wy wietlanej wewn trz egzemplarza obiektu driver. W poni szym przyk a-dzie u yli my warto ci OutputType.FILE jako argumentu metody getScreenshotAs(). Dzi ki temuprzechwycony zrzut ekranu zostanie zwrócony w pliku.

File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);

Obiekt file zwrócony przez metod getScreenshotAs() mo emy zapisa za pomoc metodycopyFile() klasy FileUtils nale cej do klasy org.apache.commons.io.FileUtils.

Interfejs TakesScreenshot wykonuje zrzuty ekranu z wykorzystaniem API przegl darki. Sterownik HtmlUnitnie obs uguje interfejsu TakesScreenshot.

Poleć książkęKup książkę

Page 20: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Selenium i testowanie aplikacji. Receptury

114

Co dalej?Klasa OutputType oferuje wiele sposobów prezentowania wyników wykonania zrzutów ekranuza pomoc metody getScreenshotAs(). W poprzednim przyk adzie widzieli my zrzut ekranuzapisany w pliku. Zrzuty ekranu mog by równie przechwytywane w tekstowym formacieBase64 lub w formacie surowych bajtów. W poni szym przyk adzie wykonano zrzut ekranuw formacie ci gu Base64.

String base64 = ((TakesScreenshot)driver).getScreenshotAs(OutputType.BASE64);

Przechwytywanie zrzutów ekranu w rodowisku RemoteWebDriver(Selenium Grid)Gdy testy s uruchamiane z wykorzystaniem interfejsu RemoteWebDriver lub Selenium Grid,nie mo na wykonywa zrzutów ekranu, poniewa interfejs TakesScreenshot nie jest zaimple-mentowany w klasie RemoteWebDriver.

Mo emy jednak u y klasy Augmenter, która dodaje interfejs TakesScreenshot do egzemplarzaRemoteWebDriver, tak jak pokazano w poni szym przyk adzie kodu.

driver = new Augmenter().augment(driver);File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);FileUtils.copyFile(scrFile, new File("c:\\tmp\\screenshot.png"));

Klasa Augmenter ulepsza klas RemoteWebDriver poprzez dodanie do niej ró nych interfejsów,w tym interfejsu TakesScreenshot.

driver = new Augmenter().augment(driver);

Po wykonaniu takiego rozszerzenia mo emy u y interfejsu TakesScreenshot z klasy RemoteWebDriverdo przechwytywania ekranu.

Zobacz te Receptura „Przechwytywanie zrzutów ekranu elementów w Selenium WebDriver”

w rozdziale 9., „Rozszerzanie Selenium”. Receptura „Porównywanie obrazów w Selenium” w rozdziale 9., „Rozszerzanie

Selenium”.

Poleć książkęKup książkę

Page 21: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Rozdzia 4. • Korzystanie z Selenium API

115

Maksymalizowanie okna przegl darkiW Selenium WebDriver brakowa o polecenia windowMaximize() z API Selenium RC. Jednak eod wersji 2.21 Selenium WebDriver obs uguje maksymalizowanie okna przegl darki.

W tej krótkiej recepturze poka , jak zmaksymalizowa okno przegl darki.

Przygotuj siUtwórz nowy test, który zbuduje egzemplarz WebDriver, przejdzie do witryny i wykona kilkapodstawowych dzia a i weryfikacji.

Jak to zrobi ?Aby zmaksymalizowa okno przegl darki, trzeba wywo a metod maximize() interfejsu Windowklasy driver. Dodaj drugi wiersz kodu z poni szego fragmentu, ten za instrukcj definiuj cegzemplarz klasy FirefoxDriver.

driver = new FirefoxDriver();driver.manage().window().maximize();

Obs uga plików cookie sesjiW witrynach internetowych u ywane s pliki cookie do przechowywania preferencji u ytkow-nika, informacji o logowaniu oraz ró nych innych szczegó ów dotycz cych klienta. SeleniumWebDriver API zapewnia ró ne metody zarz dzania plikami cookie podczas testowania. Za po-moc tych metod mo emy odczytywa warto ci plików cookie, dodawa pliki cookie oraz usuwatakie pliki podczas testowania. Mo e to s u y do testowania reakcji aplikacji podczas wykonywa-nia dzia a z plikami cookie. Interfejs WebDriver.Options udost pnia nast puj ce metody zarz -dzania plikami cookie.

Metoda Opis

addCookie(Cookie cookie) Dodaje plik cookie.getCookieNamed(String name) Zwraca plik cookie o podanej nazwie.getCookies() Zwraca wszystkie pliki cookie dla bie cej domeny.deleteCookieNamed(String name) Usuwa plik cookie o podanej nazwie.deleteCookie(Cookie cookie) Usuwa plik cookie.deleteAllCookies() Usuwa wszystkie pliki cookie dla bie cej domeny.

W tej recepturze poka , jak odczytywa pliki cookie i sprawdza ich warto .

Poleć książkęKup książkę

Page 22: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Selenium i testowanie aplikacji. Receptury

116

Przygotuj siUtwórz nowy test, który zbuduje egzemplarz WebDriver, przejdzie do witryny i wykona kilkapodstawowych dzia a i weryfikacji.

Jak to zrobi ?Utwórzmy test, który odczytuje plik cookie i sprawdza jego warto , tak jak pokazano w poni -szym przyk adzie kodu.

@TestPublic void testCookies() {} Driver.get ("http://demo.magentocommerce.com/");

// Utworzenie reprezentacji rozwijanego menu wyboru j zyka w postaci egzemplarza klasy Select Select language = new Select(driver.findElement(By .id("select-language")));

// Sprawdzenie, czy domy lnie zaznaczona opcja to j zyk polski assertEquals("Polski", language.getFirstSelectedOption().getText());

// Zmienna storeCookie powinna mie warto null Cookie storeCookie = driver.manage().getCookieNamed("store"); assertEquals(null, storeCookie);

// Zaznacz opcj przy u yciu metody SelectByVisibleText language.selectByVisibleText("English");

// Zmienna storeCookie powinna zawiera informacj o wybranym j zyku storeCookie = driver.manage().getCookieNamed("store"); assertEquals("english", storeCookie.getValue());}

Jak to dzia a?Interfejs WebDriver.Options dostarcza ró ne metody do dodawania, czytania, modyfikowaniai usuwania plików cookie. W tym przyk adzie, gdy zmieniamy j zyk sklepu, do przechowywaniapreferencji j zykowych u ywany jest plik cookie. Ten plik cookie oraz jego warto mo emyodczyta w nast puj cy sposób.

Cookie storeCookie = driver.manage().getCookieNamed("store");assertEquals("english", storeCookie.getValue());

Wywo ali my metod getCookieNamed(), przekazuj c nazw pliku cookie. Metoda zwraca egzem-plarz obiektu Cookie. Obiekt Cookie zawiera ró ne metody czytania warto ci, domeny i tak dalej.

Poleć książkęKup książkę

Page 23: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Rozdzia 4. • Korzystanie z Selenium API

117

Korzystanie z mechanizmów nawigacjiprzegl darkiPrzegl darki zapewniaj wiele metod nawigacji umo liwiaj cych dost p do stron WWW z historiiprzegl darki. Pozwalaj równie na od wie anie bie cej strony za pomoc przyciskówWstecz, Dalej oraz Od wie na pasku narz dzi okna przegl darki. API Selenium WebDriverzapewnia dost p do tych przycisków za pomoc ró nych metod interfejsu WebDriver.Navigation.Przy u yciu tych metod mo emy testowa zachowanie aplikacji.

Metoda Opis

back() Metoda powoduje przej cie do poprzedniej strony w historii przegl darki.forward() Metoda powoduje przej cie do nast pnej strony w historii przegl darki.refresh() Metoda powoduje ponowne za adowanie bie cej strony.to(String url)

to(java.net.URL url)

Metoda aduje podany adres URL w bie cym oknie przegl darki.

W tej recepturze zaprezentuj metody nawigacji w przegl darce.

Przygotuj siUtwórz nowy test, który zbuduje egzemplarz klasy WebDriver, przejdzie do witryny i wykona kilkapodstawowych dzia a i weryfikacji.

Jak to zrobi ?Utwórzmy test, który wywo uje ró ne metody nawigacji i sprawdza zachowanie aplikacji. Jegokod zamieszczono poni ej.

@Testpublic void testNavigation() { driver.get("http://www.google.com");

// Utworzenie reprezentacji pola tekstowego wyszukiwania WebElement searchField = driver.findElement(By.name("q")); searchField.clear();

// Wprowadzenie s owa kluczowego do wyszukiwania i przes anie dania searchField.sendKeys("selenium webdriver"); searchField.submit(); WebElement resultLink = driver.findElement(By.linkText("Selenium WebDriver")); resultLink.click();

Poleć książkęKup książkę

Page 24: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Selenium i testowanie aplikacji. Receptury

118

new WebDriverWait(driver, 10).until(ExpectedConditions .titleIs("Selenium WebDriver"));

assertEquals("Selenium WebDriver", driver.getTitle());

driver.navigate().back();

new WebDriverWait(driver, 10).until(ExpectedConditions .titleIs("selenium webdriver - Szukaj w Google"));

assertEquals("selenium webdriver - Szukaj w Google", driver.getTitle());

driver.navigate().forward();

new WebDriverWait(driver, 10).until(ExpectedConditions .titleIs("Selenium WebDriver"));

assertEquals("Selenium WebDriver", driver.getTitle());

driver.navigate().refresh();

new WebDriverWait(driver, 10).until(ExpectedConditions .titleIs("Selenium WebDriver"));

assertEquals("Selenium WebDriver", driver.getTitle());}

Jak to dzia a?Interfejs WebDriver.Navigation dostarcza metody back() i forward() do adowania stron z historiiprzegl darki. Metody te reprezentuj przyciski Wstecz i Dalej dost pne w dowolnej przegl dar-ce WWW. Mo emy równie od wie y lub ponownie za adowa stron poprzez wywo aniemetody refresh().

Korzystanie ze zdarze frameworkaWebDriverSelenium WebDriver zawiera klas EventFiringWebDriver, która nas uchuje ró nych zdarzezachodz cych podczas wykonywania testu. Przyk adowo zdarzenia s wyzwalane przy wej ciuna stron , gdy zostanie wykonane klikni cie elementu albo kiedy zostanie zmieniona warto .W poni szej tabeli zestawiono list wszystkich zdarze , które mo emy ledzi podczas wykony-wania testu.

Poleć książkęKup książkę

Page 25: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Rozdzia 4. • Korzystanie z Selenium API

119

Zdarzenie Opis

BeforeNavigateTo Metoda jest wywo ywana przed wywo aniem metod get(String url)lub navigate().to(String url).

afterNavigateTo Metoda jest wywo ywana po wywo aniu metod get(String url)lub navigate().to(String url).

beforeNavigateBack Metoda jest wywo ywana przed wywo aniem metody navigate().back().afterNavigateBack Metoda jest wywo ywana po wywo aniu metody navigate().back().beforeNavigateFor Metoda jest wywo ywana przed wywo aniem metody navigate().forward().afterNavigateForward Metoda jest wywo ywana po wywo aniu metody navigate().forward().beforeFindBy Metoda jest wywo ywana przed wywo aniem nast puj cych metod:

WebDriver.findElement(...),

WebDriver.findElements(...),

WebElement.findElement(...),

WebElement.findElements(...).afterFindBy Metoda jest wywo ywana po wywo aniu nast puj cych metod:

WebDriver.findElement(...),

WebDriver.findElements(...),

WebElement.findElement(...),

WebElement.findElements(...).beforeChangeValueOf Metoda jest wywo ywana przed wywo aniem metod WebElement.clear()

lub WebElement.sendKeys(...).afterChangeValueOf Metoda jest wywo ywana po wywo aniu metod WebElement.clear()

lub WebElement.sendKeys(...).beforeClickOn Metoda jest wywo ywana przed wywo aniem metody WebElement.click().afterClickOn Metoda jest wywo ywana po wywo aniu metody WebElement.click().beforeScript Metoda jest wywo ywana przed metod

RemoteWebDriver.executeScript(java.lang.String, java.lang.Object[]).afterScript Metoda jest wywo ywana po metodzie

RemoteWebDriver.executeScript(java.lang.String, java.lang.Object[]).onException Metoda ta jest wywo ywana zawsze wtedy, gdy ma by zg oszony wyj tek.

Wymienionych procedur obs ugi zdarze mo na u y do wykonania dodatkowych polece .Przyk adowo przed wprowadzeniem warto ci w polu tekstowym mo emy wyczy ci istniej cwarto lub przechwyci zrzut ekranu nawet wtedy, gdy WebDriver zg osi wyj tek. Mo na tozrobi , wykonuj c nast puj ce czynno ci.

Utwórz w asn klas nas uchiwania zdarze . Do tej klasy mo esz doda kod,który zostanie uruchomiony po zg oszeniu specyficznych zdarze .

Poleć książkęKup książkę

Page 26: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Selenium i testowanie aplikacji. Receptury

120

Za pomoc egzemplarza WebDriver utwórz egzemplarz klasy EventFiringWebDriver. Zarejestruj klas s uchacza zdarze w egzemplarzu klasy EventFiringWebDriver.

Klas s uchacza zdarze mo na utworzy na dwa sposoby: przez zaimplementowanie interfejsu WebDriverEventListener, przez rozszerzenie klasy AbstractWebDriverEventListener.

W tej recepturze poka , w jaki sposób u ywa klasy EventFiringWebDriver do nas uchiwaniazdarze WebDriver.

Przygotuj siUtwórz nowy test, który zbuduje egzemplarz WebDriver, przejdzie do witryny i wykona kilkapodstawowych dzia a oraz weryfikacji.

Jak to zrobi ?Na pocz tek zdefiniujemy klas nas uchiwania zdarze poprzez zaimplementowanie interfejsuWebDriverEventListener w nast puj cy sposób.

package com.secookbook.examples.chapter04;

import org.openqa.selenium.*;import org.openqa.selenium.support.events.WebDriverEventListener;

public class MyListener implements WebDriverEventListener { public void beforeChangeValueOf(WebElement element, WebDriverdriver) { element.clear(); }}

Nast pnie utworzymy test, który u ywa klasy EventFiringWebDriver.

package com.secookbook.examples.chapter04;

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.openqa.selenium.support.events.EventFiringWebDriver;import org.junit.After;import org.junit.Before;import org.junit.Test;

public class EventFiringTest { private WebDriver driver;

Poleć książkęKup książkę

Page 27: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Rozdzia 4. • Korzystanie z Selenium API

121

@Before public void setUp() throws Exception { driver = new FirefoxDriver(); }

@Test public void testEventFiringWebDriver() throws Exception {

EventFiringWebDriver eventDriver = new EventFiringWebDriver(driver); MyListener myListener = new MyListener(); eventDriver.register(myListener); eventDriver.get("http://bit.ly/1DbdhsW"); eventDriver.findElement(By.id("q")) .sendKeys("Selenium i testowanie aplikacji. Receptury"); }

@After public void tearDown() throws Exception { driver.quit(); }}

Co dalej?Dodajemy do klasy odbiornika zdarze jedn dodatkow procedur obs ugi zdarzenia, któraprzechwytuje zrzut ekranu w momencie zg aszania wyj tku.

public void onException(Throwable exception, WebDriver driver) { try { if(driver.getClass().getName().equals("org.openqa.selenium.remote.RemoteWebDriver")) { driver = new Augmenter().augment(driver); } File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); FileUtils.copyFile(scrFile, newFile("target/screenshots/error.png")); } catch (Exception e) { e.printStackTrace(); }}

Poleć książkęKup książkę

Page 28: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Selenium i testowanie aplikacji. Receptury

122

Poleć książkęKup książkę

Page 29: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Skorowidz

AADB, 326adnotacja

@CacheLookUp, 186@DataProvider, 160@FindBy, 186@Test, 161@When, 253FindsBy, 199

adresdocelowy, 59URL, 47

AJAX, 186, 229alert, 133, 135

confirm, 136JavaScript, 134

Android Debug Bridge, 326Ant, 26, 27, 271, 272, 273, 279,

281konfiguracja, 29, 281

Apache Ant, Patrz: AntApache Maven, Patrz: MavenAPI Advanced User Interactions,

104API Apache POI, 165aplikacja mobilna, 319, 323, 325Appium, 319, 320Apple Instruments, 322argument

–hubHost, 302-role, 302

atrybut, 65class, 57, 61Class, 71DataSource, 174handle, 147, 148, 149id, 56, 57, 61, 71, 140innerText, 75, 85name, 57, 61, 72, 140, 146readonly, 86TestCaseSource, 170textContent, 75, 85title, 148, 150value, 189warto cz ciowa, 73wyszukiwanie, 66, 71, 72

AutoIt, 286, 287, 290, 291

Bbaner, 139BDD, 245, 246

w rodowisku .NET, 255Behave, 246, 267, 269Behavior Driven Development,

Patrz: BDDbiblioteka, 18

Appium, 323Appium Java Client, 325AutoItX, 291jQuery, 78, 80, 129, 210jQuery Mobile, 320kliencka, 33, 34, 36

OpenCSV, 162Pythona, 180SpecFlow.NET, 255, 256unittest, 180

BrowserStack, 313

CCapybara, 246, 264, 265CDN, 80chmura, 297, 313

Sauce Labs, Patrz: Sauce LabsChromeDriver, 40, 42CI, 26Content Delivery Network,

Patrz: CDNCSS, 47, 70Cucumber-JVM, 246, 248, 253,

264konfiguracja, 254

Ddekorator @ddt, 180dokument XML drzewo, 62DOM, 48, 54, 63, 68

korze , Patrz: korzeodpytywanie, 124w ze , Patrz: w ze

drzewo modelu DOM,Patrz: DOM

dziecko, 64

Poleć książkęKup książkę

Page 30: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Skorowidz

332

EEclipse, 18, 25

konfigurowanie z Maven, 19element

canvas, 237checkbox, 97dwukrotne klikni cie, 107form, 83, 84HTML, 206input, 83li, 110nadrz dny, 62potomny, 58, 62przeci gnij i upu , 108select, 88, 206sprawdzanie stanu, 103table, 99td, 99, 209tr, 99, 209video, 234, 236

etykieta tekstowa, 92Excel, 164, 172

FFirebug, 49, 51Firefox, 36, 75

narz dzia programistyczne,49

Flash, 286, 296formularz, 83funkcja, Patrz te : metoda

ControlClick, 290ControlSetText, 290DataProvider, 159normalize-space, 75text, 74UI Automation, 322WinWaitActive, 290XPath, 66

Ggem

Cucumber, 265DeepTest, 299page-object, 203, 204Roo, 175, 178

generator akcji, 239Google Chrome narz dzia

programistyczne, 51Google Docs, 178grupa opcji, 95, 96, 97GUI, 293

Hhistoryjka u ytkownika, 246,

264, 267HTML, 47, 48, 49HTML5, 233, 237, 239

IIDE, 18IntelliJ IDEA, 18interfejs

Alert, 134, 135, 139IWebDriver, 199Java Image, 223JavascriptExecutor, 111,

112jQuery API, 79localStorage, 239Navigation Timing, 230Selenium API, 325sessionStorage, 241, 243TakesScreenshot, 113, 114,

223, 224Timeouts, 125timing, 230u ytkownika, 133

graficzny, Patrz: GUInatywny, 286niewebowy, 293

WebDriver.Navigation, 117WebDriver.Options, 116WebDriver.TargetLocator,

140, 142WebDriverEventListener,

120WebElement, 58, 82, 83, 95,

206, 214, 216Window, 115

Internet Explorer DriverServer, 36, 38

InternetExplorerDriver, 36

JJavaScript, 111, 129Jenkins, 26, 272, 274, 281

Build Trigger, 278kompilacja, 278konfiguracja, 281rodowisko rozproszonegobudowania i testowania,274

wy wietlanie wyników, 278j zyk

Gherkin, 246, 247Python, Patrz: PythonRuby, Patrz: RubyXPath, Patrz: XPath

jQuery, 210jQuery File Upload, 287JUnit, 22, 155, 254

Kklasa

AbstractWebDriverEventListener, 120

Actions, 105, 108, 109Augmenter, 114BufferedReader, 164By, 55, 60, 61, 99

strategia lokalizacji, 55Canvas, 237CompareUtil, 225, 226, 228DataProvider, 159DesiredCapabillities, 301driver, 115EdgeDriver, 43EventFiringWebDriver,

118, 120ExpectedCondition, 127

implementacjaniestandardowa, 128

ExpectedConditions, 125,127, 136

FirefoxDriver, 115FluentWait, 130GoogleSearchTest.java, 23

Poleć książkęKup książkę

Page 31: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Skorowidz

333

InternetExplorerDriver, 39IOSDriver, 325Java, 215JavascriptExecutor, 79, 217,

234, 236, 243JQueryUITab, 210, 212, 213Keys, 106LoadableComponent, 189,

190ObjectMap, 218, 219OutputType, 114PageFactory, 183, 185PhantomJSDriver, 318PixelGrabber, 226Properties, 221RemoteWebDriver, 40, 301RunCukesTest, 254Select, 87, 88, 90, 92, 94,

238SimpleDDT, 157SpreadsheetData, 165, 167uruchamiaj ca, 155WebDriverWait, 125, 126,

136WebElement, 54, 94WebElementExtender, 215,

216, 239WebTable, 209WebTable.java, 206WrapsDriver, 224zagnie d anie, 193

klawiatura, 106klawisz skrótu, 110klucz clickCount, 243kod

HTML, Patrz: HTML kodJavaScript, 111, 112

kombinator rodze stwa, 76koncentrator, 299, 300, 301

Sauce Labs, 315kontrolka, 295

Flash, 286Flex, 286jQuery, 205listy, 88menu, 87Silverlight, 286

korze , 62

kwerenda XPath,Patrz: wyra enie XPath

Llink, 111

adres docelowy, Patrz: adresdocelowy

wyszukiwanie, 60lista

jednokrotnego wyboru, 94rozwijana, 90warto oczekiwana, 92wielokrotnego wyboru, 88,

89, 94

Mmagazyn

lokalny, 241, 243sesji, 241, 243

mapa obiektów, 217, 218bazuj ca na XML, 221

Maven, 18, 25, 26, 271, 272,274, 323

mened er pakietów NuGet,Patrz: NuGet

menu, 90Drawing Tool, 238kontekstowe, 109, 110nawigacji, 139podr czne, Patrz: menu

kontekstowerozwijane, 87, 88, 89, 92, 94

metoda, Patrz te : funkcjaaccept, 136addCookie, 115alert, 134alertIsPresent, 136back, 117, 118captureElementBitmap, 239captureElementPicture, 223,

224clear, 82, 83click, 82, 83, 84, 95, 96, 106CompareImage, 226contextClick, 109, 110copyFile, 113cssSelector, 70, 213

deleteAllCookies, 115deleteCookie, 115deleteCookieNamed, 115deselectByIndex, 90deselectByVisibleText, 89dismiss, 138, 139doubleClick, 107dragAndDrop, 108driver.close, 148driver.getPageSource, 152driver.getTitle, 111driver.getWindowHandles,

149, 150, 151driver.switchTo.alert, 135,

136driver.switchTo.default

Content, 142driver.switchTo.frame, 140,

142, 145driver.switchTo.window, 147executeScript, 112, 236, 243ExpectedConditions.title

Contains, 126find, 79findElement, 54, 56, 58, 103,

125, 128, 145findElements, 54, 58, 59,

100, 213forward, 117, 118get, 119getAllSelectedOptions, 94getAttribute, 85, 86getCellData, 209getCellEditor, 209getCookieNamed, 115, 116getCookies, 115getCSSValue, 86, 87getFirstSelectedOption, 94getLocator, 221GetLocator, 222getOptions, 89, 92getProducts, 197getProperty, 221getScreenshotAs, 113, 114,

224getText, 84, 85, 94, 135, 209Google.new, 178highlightElement, 216, 217highlightElements, 216

Poleć książkęKup książkę

Page 32: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Skorowidz

334

metodaimplicitlyWait, 125initElements, 185, 186InitElements, 199injectjQuery, 80injectjQueryIfNeeded, 80isDisplayed, 103isElementPresent, 102, 103isEnabled, 103, 104isMultiple, 88isSelected, 97, 98, 103jQueryLoaded, 80keyDown, 106keyUp, 106linkText, 60, 61moveByOffset, 239name, 72navigate, 119nth-child, 76partialLinkText, 60, 61pause, 236play, 236przes anianie, 192refresh, 117, 118RemoteWebDriver.execute

Script, 119searchInStore, 197selectByIndex, 90selectByValue, 89, 238selectByVisible, 94selectByVisibleText, 89sendKeys, 82, 83, 139, 214setAttribute, 215setBrowserName, 301setPlatform, 301setVersion, 301size, 209submit, 82, 83, 84tagName, 61, 62, 209TestContext, 174testData, 164, 167testDropdown, 91, 93to, 117wait.until, 127WebDriver.findElement,

119WebDriver.findElements,

119WebElement.clear, 119

WebElement.click, 119WebElement.findElement,

119WebElement.findElements,

119WebElement.sendKeys, 119windowMaximize, 115xpath, 65, 69

Microsoft Edge, 43Microsoft Internet Explorer

narz dzia programistyczne, 53Microsoft WebDriver Server, 43,

45model

COM, 291DOM, Patrz: DOM

moduDDT, 179, 180nose, 299, 312

MSTEST, 171, 172, 174, 299mysz, 106, 237

dwukrotne klikni cie, 106,107

przyciski prawy, 109

Nnarz dzie ci g ej integracji,

Patrz: CINetBeans, 18NuGet, 29, 32NUnit, 167, 168NUnit Test Adaptor for Visual

Studio, 263

Oobiekt

Cookie, 116DataTable, 174mapa, Patrz: mapa obiektówPage, 260p ynnego oczekiwania, 131WebElement, 206, 209window.performance, 230,

231oczekiwanie

bazuj ce na klasieFluentWait, 130

jawne, 125, 127na aktualizacj warto ci

atrybutu elementu, 128na widoczno elementu,

129na zdarzenia w modelu

DOM, 129niejawne, 124, 125niestandardowe, 127

odtwarzacz wideo, 234, 236okno

confirm, 136, 137, 139identyfikacja, 146modalne, 134podrz dne, 139potomne, 139, 146, 147prompt, 137, 138, 139przegl darki

maksymalizowanie, 115wyskakuj ce, 133, 150zamykanie, 148

operator+, 77>, 76unii, 68

oprogramowaniesterowane testami, Patrz:

TDDsterowane zachowaniem,

Patrz: BDDo XPath, 68

PPage Object, 181, 185, 189

implementacjaw Pythonie, 200, 202w Ruby, 203w rodowisku .NET, 197

zagnie d anie, 192PhantomJS, 316, 318plik

.xls, 165

.xlsx, 165build.xml, 27, 29, 281conf.xml, 310cookie, 115, 116, 239CSV, 162, 164definicji kroku, 259, 263,

264, 268

Poleć książkęKup książkę

Page 33: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Skorowidz

335

OpenDialogHandler.exe,290

pom.xml, 18, 21, 25, 316POM.xml, 323przesy anie na serwer, 287specyfikacji, 258wideo, 236

poletekstowe, 82wyboru, 103

lokalizowanie, 98zaznaczanie, 98

polecenie clean, 26porównywanie obrazów, 224,

226, 227potomek, 64, 69

wyszukiwanie, 76, 77predykat, 65, 67protokó

JSON, 320, 322, 326JSON WebDriver, 38

przegl darkahistoria, 118nawigacja, 117okno, 115przechowywane dane, 239

prze cznik, 95, 96przestrze nazw java.awt.Image,

226przodek, 64, 69przycisk, 82, 83, 144pseudoklasa, 76, 77

:active, 77:checked, 78:disabled, 78:enabled, 78:focus, 77:hover, 77contains, 75

PUnit, 299Python, 32, 179, 180, 200, 202,

267, 299, 310, 312

Rramka

HTML, 139inline, 144, 145

refaktoryzacja, 187, 189rodze stwo, 64, 69

kombinator, Patrz:kombinator rodze stwa

wyszukiwanie, 77rodzic, 64Roo, 175, 177, 178RSpec, 264Ruby, 32, 175, 203, 264, 299runner, Patrz: klasa

uruchamiaj ca

SSauce Connect, 315Sauce Labs, 313scenariusz, 253selektor

CSS, 51, 52, 70, 74, 76, 100,186

jQuery, 78or, 73XPath, 51, 52, 100, 186

Selenium, 205, 224, 264, 271,286, 297

Selenium Grid, 298Selenium Grid Server, 299, 300Selenium Hub, 301

w ze , 301, 302, 303, 304Selenium Server, 299Selenium WebDriver, 17serwer

ci g ej integracji, 272HTTP, 322, 326

Sikuli, 293, 295Silverlight, 286, 296s uchacz zdarze , 120SpecFlow.NET, 246statystyka czasowa, 230

cie ka, 64bezwzgl dna, 65wzgl dna, 65, 71

rodowisko zintegrowanetworzenia oprogramowania,Patrz: IDE

Ttabela, 99, 209

webowa, 205wy wietlanie danych, 99

tablica, 164tag

frame, 139frameset, 139iframe, 144

tag Anchor, 111TDD, 245tekstu wyszukiwanie, 74, 75test, 25

akceptacyjny, 245automatyzacja, 123, 181, 297bazuj cy na danych, 154,

155, 159, 167, 171, 174,175, 177, 179

BDD/ATDD, 248funkcjonalny, 316jednostkowy, 304na platformie .NET, 29, 197NUnit, 263synchronizacja, 124, 125,

127tworzenie Ruby, 34uruchamianie

automatyczne, 284CI, 26z wiersza polecenia, 26

w chmurze, 313w rodowisku ci g ej

integracji, 281wykonywanie równoleg e,

298, 299, 304, 305, 306,308, 310, 312

Test Driven Development,Patrz: TDD

TestNG, 22, 155, 159, 160, 299,304, 306, 309

testowanie sterowane danymi,153, 154, 155, 159, 167, 171,174, 175, 177, 179

Twitter, 144

Uuwierzytelnianie, 291, 293

Poleć książkęKup książkę

Page 34: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z

Skorowidz

336

WWeb storage, 239w ze , 62, 64, 69wid et, 210, 213, 214Wiki Confluence, 178WinAnt, 27, 279wirtualizacja, 297wydajno , 229, 297wyj tek, 119

ElementNotVisibleException,84

NoAlertPresentException,136

NoSuchElementException,54, 58, 103, 130

NoSuchWindowException,148

wyra enie XPath, 62, 65wzorzec Page Object, Patrz:

Page Object

XXPath, 62, 68

o , Patrz: o XPathwyra enie, Patrz: wyra enie

XPath

Zzdarzenie, 118, 128

afterChangeValueOf, 119afterClickOn, 119afterFindBy, 119afterNavigateBack, 119afterNavigateForward, 119afterNavigateTo, 119afterScript, 119beforeChangeValueOf, 119beforeClickOn, 119beforeFindBy, 119beforeNavigateBack, 119beforeNavigateFor, 119BeforeNavigateTo, 119beforeScript, 119onException, 119onsubmit, 84s uchacz, 120

znacznik, 61frameset, 139, 144iframe, 139, 144

znak$=, 73*, 68*=, 73,, 73

., 64, 75

.., 64/, 64//, 64@, 65, 68[ ], 65^=, 73|, 68+, 77>, 76kropka, Patrz: znak .podwójna kropka,

Patrz: znak ..podwójny uko nik,

Patrz: znak //uko nik, Patrz: znak /

zrzut ekranu, 113, 114, 223

danie, 47

Poleć książkęKup książkę

Page 36: Tytuł oryginału: Selenium Testing Tools Cookbook, Second ... · PDF fileAutomatyzowanie odtwarzacza wideo HTML5 234 Automatyzowanie interakcji z elementem HTML5 canvas 237 ... z