Skrypt: Test wersji językowej strony

 

W dzisiejszym materiale pokażę skrypt testowy, która weryfikuje poprawność oraz funkcjonowanie listy zmieniającej wersje językowe strony. Oczywiście, skrypt tak jak poprzednie skrypty, będzie napisany w oparciu o podejście Page Object Model. Testy będziemy wykonywać na próbnej wersji sklepu internetowego pod adresem: http://magento-demo.lexiconn.com/

 

Listing 1.0

 

Listing 1.0 przedstawią główną stronę sklepu magneto-demo.

 

Poniżej umieszczam scenariusz testowy, który realizuje mój skrypt.

 

 

Jak widzimy wyżej, skrypt ogólnie będzie sprawdzał działanie listy, za pomocą której mamy możliwość zmiany wersji językowej strony. Po wybraniu konkretnej pozycji z listy, strona automatycznie powinna zostać odpowiednio przetłumaczona. Weryfikowanie czy strona została przetłumaczona, będzie opierało się na sprawdzeniu jakiegoś elementu tekstowego na stronie (w naszym przypadku będzie to etykieta listy). Jeśli etykieta zmieni swoją wartość tekstową odpowiednio do wybranej pozycji językowej – wówczas uznajemy, że lista działa właściwie a strona została poprawnie przetłumaczona.

 

Skrypt będzie składał się z dwóch klas: pierwsza klasa (HomePage) to reprezntacja strony głównej na której odbywają się wszystkie kroki scenariusza, zaś druga klasa (HomePageTest) to klasa testowa, w której odbywać się będa wszystkie testy.

 

HomePage.class

package pages;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.Select;
import java.util.List;


        public class HomePage {

            WebDriver driver;

            @FindBy(id="select-language")
            WebElement langList;

            @FindBy(xpath = "//*[@id='top']/body/div/div[2]/div[1]/div/div/div/label")
            WebElement labelLangList;

            public HomePage(WebDriver driver){

                this.driver = driver;

                //This initElements method will create all WebElements

                PageFactory.initElements(driver, this);

            }



            public String verifyHomePageTitle()
            {
                return driver.getTitle();
            }

            public int verifyNumberSelectItem()
            {
                Select langSelect = new Select(langList);

                List<WebElement> select = langSelect.getOptions();
                return select.size();
            }

            public String verifyDefaultSelectItem()
            {
                Select select = new Select(langList);
                return select.getFirstSelectedOption().getText();
            }

            public boolean verifySelectIsMultiple()
            {
                Select select = new Select(langList);
                return select.isMultiple();
            }

            public String verifyListVersionFrench()
            {
                Select select = new Select(langList);
                select.selectByVisibleText("French");

                String strlabelLangList = labelLangList.getText();
                return strlabelLangList;
            }
            public String verifyListVersionEnglish()
            {
                Select select = new Select(langList);
                select.selectByVisibleText("English");

                String strlabelLangList = labelLangList.getText();
                return strlabelLangList;
            }

            public String verifyListVersionGerman()
            {
                Select select = new Select(langList);
                select.selectByVisibleText("German");

                String strlabelLangList = labelLangList.getText();
                return strlabelLangList;
            }
        }

 

 

Poniżej dokładnie opiszę najważniejsze linie kodu:

 

 

Powyżej widzimy lokalizację elementów w ujęciu Page Factory. Lokalizujemy dwa elementy:

WebElement langList – lista z pozycjami wersji językowych strony.

WebElement labelLangList – etykieta listy – będziemy sprawdzać czy tekst zmienia się w zależności od wybranej wersji językowej.

 

Listing 1.1

 

Listing 1.1 przedstawia opisane wyżej WebElementy

 

 

Następnie definiowany jest konstruktor:

PageFactory.initElements(driver, this);  – inicjalizowane są WebElementy zdefiniowane powyżej za pomocą instrukcji @FindBy

 

 

Metoda verifyHomePageTitle() pobiera i zwraca tytuł strony. W klasie testowej będziemy sprawdzać czy pobrany tytuł zgadza się z tytułem oczekiwanym.

 

 

Kolejna metoda to: verifyNumberSelectItem() – metoda ta zwraca liczbę pozycji wskazanej listy.

Funkcja getOption() – zwraca wszystkie elementy jakie zawiera lista, zaś  funkcja size()  zwraca liczbę elementów wskazanej listy.

 

 

verifyDefaultSelectItem() – za pomocą tej metody pobieramy i zwracamy domyślnie zaznaczoną pozycję listy.  Z wykorzystaniem tej metody w klasie testowej, będziemy sprawdzać czy domyślnie zaznaczoną pozycją na liście jest ‚English‚.

 

 

verifySelectIsMultiple()  – w tej metodzie zwracamy wartość boolean (czyli true bądź false). Weryfikowanym wyrażeniem jest select.isMultiple() – w tym miejscu sprawdzamy czy lista jest multi-listą, czyli czy jest listą wielokrotnego wyboru (lista wielokrotnego wyboru – to lista w której możemy jednocześnie zaznaczyć więcej niż jedną pozycję).

 

 

Poniżej widać 3 metody, które będziemy wykorzystywać w klasie testowej do sprawdzania aktualnie wybranej wersji językowej strony. Metody te służą do wybierania określonych pozycji z listy oraz wracania tekstu wskazanej labelki.

Przechodzimy teraz do omówienia klasy testowej – HomePageTest

 

HomePageTest.class

package test;

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import pages.HomePage;


        public class HomePageTest {

            WebDriver driver;
            HomePage  homePage;

            @BeforeMethod
            public void setup(){

                System.setProperty("webdriver.chrome.driver", "C:\\Users\\Tomasz\\Documents\\seleniumChromeDriver\\chromedriver.exe");
                driver = new ChromeDriver();
                driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
                driver.get("http://magento-demo.lexiconn.com/");
                homePage = new HomePage(driver);
            }


            @Test(priority=1)
            public void loginPageTitleTest(){
                String title = homePage.verifyHomePageTitle();
                Assert.assertEquals(title, "Madison Island");
            }


            @Test(priority = 2)
            public void  selectIsMultipleTest()
            {
                Assert.assertTrue(!homePage.verifySelectIsMultiple());
            }

            @Test(priority=3)
            public void numberSelectItemTest(){

                Assert.assertTrue(homePage.verifyNumberSelectItem()==3);
            }


            @Test (priority = 4)
            public void  defaultSelectItemTest()
            {
                Assert.assertEquals(homePage.verifyDefaultSelectItem(), "English");
            }



            @Test (priority = 5)
            public void listVersionFrenchTest()
            {

                Assert.assertEquals(homePage.verifyListVersionFrench(), "VOTRE LANGUE:");
            }

            @Test (priority = 6)
            public void listVersionEnglishTest()
            {

                Assert.assertEquals(homePage.verifyListVersionEnglish(), "YOUR LANGUAGE:");
            }

            @Test (priority = 7)
            public void listVersionGermanTest()
            {

                Assert.assertEquals(homePage.verifyListVersionGerman(), "IHRE SPRACHE:");
            }



            @AfterMethod
            public void tearDown()
            {
                driver.quit();
            }
        }

 

 

Dokładny opis najważniejszych linii kodu:

 

Test nr 1.

Metoda PageTitleTest() zapisuje do zmiennej title – pobrany metodą verifyHomePageTitle() tytuł a następnie za pomocą asercji porównuje tytuł z ciągiem znaków „Madison Island” – który jest prawidłowym, oczekiwanym tytułem.

 

 

Test nr 2.

Metoda selectIsMultipleTest() – za pomocą asercji sprawdza czy lista jest jednokrotnego wyboru.

 

Test nr 3.

numberSelectItemTest() – metoda z wykorzystaniem asercji weryfikuje czy liczba pozycji na liście jest równa 3.

 

Test nr 4.

defaultSelectItemTest() – metoda z wykorzystaniem asercji sprawdza czy aktualnie/domyślnie wyświetlona pozycja  na liście to „English

 

Test 5, 6, 7

Trzy poniższe testy weryfikują tekst labelki a właściwe jego wersję językową. Weryfikacje poprzedzone są wybraniem odpowiedniej pozycji na liście (jeśli np. wybierzemy język niemiecki to tabelka powinna nazywać się: IHRE SPRACHE: )

 

 

Na koniec pokażę jeszcze jak wygląda raport podsumowujący nasze testy. Jak widać wszystkie nasze testy przeszły z wynikiem pozytywnym.

 

 

Tak oto zrealizowaliśmy zamieszczony na samym początku scenariusz testowy. Oczywiście jest to uproszczona wersja testu – polegającego na sprawdzeniu poprawnosci działa listy z wersjami językowymi. 

 

6 myśli na “Skrypt: Test wersji językowej strony”

  1. Bardzo dziękuję, mam pytanie odnośnie skryptu, ale wysłałam to w wiadomości priv, będę wdzięczna za odpowiedz
    Pozdrawiam

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *