Metodologia testowania aplikacji
Transkrypt
Metodologia testowania aplikacji
Metodologia testowania
aplikacji
ćwiczenia 5
Selenium - zestaw narzędzi służących do automatycznego
testowania aplikacji webowych.
selenium IDE (wtyczka do firefoxa)
selenium Remote Control - uruchamianie testów na różnych środowiskach
selenium Webdriver - połączenie API i sterowników do przeglądarek
http://www.seleniumhq.org/
Selenium WebDriver - Narzędzie zawierające w sobie
zarówno API pozwalające na interakcję z przeglądarką jak i
sterowniki które tą komunikację umożliwiają.
Interfejs WebDrivera jest prosty i intuicyjny, dostarcza
wszelkich
podstawowych
operacji
jakie
wykonuje
użytkownik korzystając z przeglądarki.
http://www.seleniumhq.org/download/
Przy tworzeniu nowego projektu np. w
Eclipse dodajemy zewnętrzne
biblioteki, które wcześniej pobraliśmy
ze strony Selenium.
1) Eclipse:
File -> New -> New Java Project
2) Zakładka Libraries:
Add External JARs…
3) Zaznaczamy i dodajemy oba pliki z
rozszerzeniem *.jar
● Eksport testu do postaci kodu
Mając otwarty dany skrypt testowy w Selenium IDE z menu
Plik wybieramy:
Export Test Case As
Następnie zaznaczamy:
Java / JUnit 4 / WebDriver
WebDriver - Selenium 2/WebDriver API
WebDriver Backed - Selenium 1/RC API
● Eksport testu do postaci kodu
● Piszemy własny test pod Selenium WebDriver
Dwie podstawowe klasy:
● WebDriver (obsługa przeglądarki)
get(), getTitle(), quit(), close()
● WebElement (obsługa elementów strony)
findElement(), By.*
● Piszemy własny test pod Selenium WebDriver
Lokalizowanie elementów
●
●
●
●
●
●
●
●
By.id(String)
By.linkText(String)
By.name(String)
By.partialLinkText(String)
By.tagName(String)
By.xpath(String)
By.cssSelector(String)
By.className(String)
● Przykład 1
import …
public class webdriver_test1 {
public static void main(String[] args) throws InterruptedException {
// Tworzymy nową instancję Firefoxa
WebDriver driver = new FirefoxDriver();
// Używamy przeglądarki do wejścia na stronę wstt
driver.get("http://www.wstt.edu.pl/");
// Tworzomy nowy WebElement zawierajacy odwołanie do cookies (zamykanie komunikatu ze strony wstt)
WebElement cookiesInfo = driver.findElement(By.linkText("Nie pokazuj więcej tego komunikatu"));
// Klikamy w link "Nie pokazuj więcej tego komunikatu"
cookiesInfo.click();
// Pauza 1s
Thread.sleep(1000);
// Zmiennej element wskazujemy link do materiałów na stronie wstt
WebElement element = driver.findElement(By.linkText("Materiały"));
// Klikamy w element (wchodzimy w link od materiałów)
element.click();
// Pauza 1s
Thread.sleep(1000);
// Pobieramy aktualny URL strony i wypisujemy w konsoli
System.out.println("Page adress is: " + driver.getCurrentUrl());
// Zamykamy przeglądarkę
driver.quit();
}
}
● Przykład 2 (wyznaczanie horoskopu dla zadanej daty)
import …
public class webdriver_test2 {
public static void main(String[] args) throws InterruptedException {
WebDriver driver = new FirefoxDriver();
// Maksymalizujemy rozmiar okna przeglądarki
driver.manage().window().maximize();
// Przechodzimy na stronę http://www.dobrysennik.pl/horoskop
driver.get("http://www.dobrysennik.pl/horoskop");
// Definiujemy nowy WebElement link do podstrony Horoskop dzienny
WebElement horoskopDzienny = driver.findElement(By.linkText("Horoskop dzienny"));
horoskopDzienny.click();
WebElement formularzDaty = driver.findElement(By.id("numer_form"));
// Definiujemy obiekt klasy actions który posłuży nam do wykonania dowolnej akcji na stronie
Actions actions = new Actions(driver);
// Definiujemy co chcemy zrobić (moveToElement)
actions.moveToElement(formularzDaty);
// Przewijamy stronę do elementu formularzDaty
actions.perform();
// Wyszukujemy elementy na stronie (dzien)
WebElement formularzDzien = driver.findElement(By.id("dzien"));
// Wyszukujemy elementy na stronie (miesiac)
WebElement formularzMiesiac = driver.findElement(By.id("miesiac"));
// Wyszukujemy elementy na stronie (rok)
WebElement formularzRok = driver.findElement(By.id("rok"));
// Wchodzimy w dropdown menu dzien i wpisujemy 10
formularzDzien.click();
● Przykład 2 (wyznaczanie horoskopu dla zadanej daty)
formularzDzien.sendKeys("10");
Thread.sleep(1000);
// Wchodzimy w dropdown menu miesiac i wpisujemy Luty
formularzMiesiac.click();
formularzMiesiac.sendKeys("Luty");
Thread.sleep(1000);
// Wchodzimy w dropdown menu rok i wpisujemy 1980
formularzRok.click();
formularzRok.sendKeys("1980");
Thread.sleep(1000);
// Przy ostatnim elemencie formularza klikamy w submit
formularzRok.submit();
Thread.sleep(3000);
// Pobieramy tekst z elementu o id=lokalizacja
String messege = driver.findElement(By.id("lokalizacja")).getText();
// Sprawdzamy czy element zawiera odpowiedni wynik dla naszego testu
if (messege.contains("10 Lut 1980r."))
System.out.println("wyświetlono horoskop dla poprawnej daty");
else
System.out.println("wyświetlono niepoprawny wynik dla zadanej daty");
driver.quit();
}
}
● Przykład 3 (wyznaczanie trasy)
public class webdriver_test3 {
public static void main(String[] args) throws InterruptedException {
WebDriver driver = new FirefoxDriver(myprofile);
driver.manage().window().maximize();
driver.get("http://www.viamichelin.pl/web/Mapy-plany");
// czekamy 5 sek. do wykonania akcji
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
// wyszykujemy element xpath kierujący do akcji wyznaczania trasy
driver.findElement(By.xpath("//*[@id='content']/div[1]/div[3]/section/nav[1]/ul/li[1]/a/span")).click();
// definiujemy miejsce początkowe
driver.findElement(By.id("departure")).click();
driver.findElement(By.id("departure")).sendKeys("Warszawa");
driver.findElement(By.id("departure")).sendKeys(Keys.RETURN);
// definijemy miejsce docelowe
driver.findElement(By.id("arrival")).click();
driver.findElement(By.id("arrival")).sendKeys("Berlin");
driver.findElement(By.id("arrival")).sendKeys(Keys.RETURN);
Thread.sleep(3000);
driver.findElement(By.xpath("//*[@id='content']/div[1]/div[3]/section/div[1]/div[1]/ul/li[1]")).click();
Thread.sleep(5000);
String result = driver.findElement(By.xpath("//*[@id='content']/div[1]/div[3]/div/div[5]/div/table/tbody/tr/td/p[1]")).getText();
if (result.equals("575 km"))
System.out.println("Dystans poprawny");
else
System.out.println("Dystans niepoprawny");
}
}
W ramach pracy domowej proszę o przygotowanie
przynajmniej jednego testu wykorzystującego Selenium
WebDriver.
Można skorzystać z opcji eksportu pod Selenium IDE, ważne
aby przykład zawierał przynajmniej kilka użyć różnych
lokalizatorów na stronie (findElement…)
Proszę o wysyłanie rozwiązania w pliku tekstowym.
adres na który można przesyłać zadania:
[email protected]