Przykładowy skrypt: Dodanie produktu do koszyka

 

W dzisiejszym materiale pokażę jak może wyglądać przykładowy skrypt realizujący jakąś funkcjonalność na stronie – naszym przypadku będzie do dodanie produktu do koszyka. Skrypt będzie napisany bez użycia Page Object Pattern – czyli będzie napisany w jednej klasie bez rozbicia na różne sekcje. Jest to zabieg celowy, gdyż w kolejnym materiale ten sam skrypt przedstawię właśnie w oparciu o Page Object Pattern oraz z użyciem frameworka TestNG. Zobaczycie w ten sposób, jak duże korzyści osiągniemy stosując dobre praktyki programowania oraz gotowe rozwiązania jakie dostarcza nam framework TestNG.

 

Pełny kod skryptu:

 

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

import java.util.concurrent.TimeUnit;

        public class Main {

            public static void main(String[] args) {


                System.setProperty("webdriver.chrome.driver", "C:\\Users\\Tomasz\\Documents\\seleniumChromeDriver\\chromedriver.exe");
                WebDriver driver = new ChromeDriver();
                driver.manage().window().maximize();
                driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);


                driver.get("http://www.sklep-graal.pl");


                String rightTitle = "The Walking Dead";
                String rightPrice = "154,90 zł";
                String rightQuantity = "1";
                String rightStatus = "dostępna";
                String rightStatement = "Produkt dodany do koszyka.";


                WebElement games = driver.findElement(By.linkText("Gry planszowe"));
                games.click();

                WebElement categoryGame = driver.findElement(By.linkText("Przygodowe"));
                categoryGame.click();

                WebElement title = driver.findElement(By.linkText("The Walking Dead"));

                title.click();

                String availability = driver.findElement(By.xpath(".//*[@id='box_productfull']/div[3]/table/tbody/tr[1]/td[2]/dl/dd[1]")).getText();

                String heading = driver.findElement(By.xpath(".//*[@id='box_productfull']/div[2]/h1")).getText();

                String price = driver.findElement(By.xpath(".//*[@id='box_productfull']/div[3]/table/tbody/tr[2]/td/div[1]/em")).getText();


                WebElement buttonBasket = driver.findElement(By.cssSelector("button[type='submit'][class='addtobasket']"));

                String quantity = driver.findElement(By.cssSelector("input[name='quantity']")).getAttribute("Value");


                if (heading.equals(rightTitle) && price.equals(rightPrice) && availability.equals(rightStatus) && quantity.equals(rightQuantity)) {

                    buttonBasket.click();

                } else {
                    System.out.println("Produkt nie został dodany do koszyka! Sprawdz czy wszystkie informacje o produkcie się zgadzają.");
                }

                String komunikat = driver.findElement(By.cssSelector("div.container p")).getText();


                if (komunikat.equals(rightStatement)) {
                    System.out.println(komunikat);
                    System.out.println("Test zakończony pomyślnie!");
                }


            }
        }

 

 

 

Początkowe 4 linijki to ustawienia property do ChromeDrivera, stworzenie instancji ChromeDriver oraz maksymalizacja okna przeglądarki i ustawienie czasu czekania na ładowanie elementów na stronie (implicitlyWait) – w naszym przypadku czekamy maksymalnie 10 sekund.

 

 

Kolejna linijka to przejście na stronę sklepu internetowego na którym będziemy przeprowadzać test.

 

 

Do koszyka chcemy dodać KONKRETNY produkt, a nie jakiś przypadkowy (test będzie sprawdzał czy do koszyka jest dodany prawidłowy produkt),  wiec musimy podać dokładne dane interesującej nasz pozycji: tytuł, cena, ilość, status produktu (produkt dostępny bądź nie).  Do zmiennej rightStatement przypisujemy treść komunikatu jaka pojawia się, gdy produkt zostanie prawidłowo dodany do koszyka – będziemy na końcu skryptu sprawdzać czy dokładnie ten komunikat się pojawił – jeśli nie wówczas mamy jasny przekaz , że coś poszło nie tak.

 

 

 

Interesującym nas produktem jest ‚Gra planszowa’ z kategorii ‚Przygodowa

 

 

 

W tym celu lokalizujemy odpowiednie pozycje na liście Menu i klikamy w nie.

 

 

Jak widzieliśmy wyżej, nazwa interesującej nas gry to: ‚The Walking Dead’

 

 

Klikamy na tytuł pozycji w efekcie czego przenosimy się na ekran szczegółów wybranego produktu (ekran karty produktu)

 

 

Ekran szczegółów produktu – jak widać ekran ten zawiera m.in. tytuł gry, dokładną cenę, ilość sztuk, informacje o dostępności oraz przycisk ‚Do koszyka‚ dzięki któremu mamy możliwość dodania produktu do naszego koszyka.

 

 

 

Na początku skryptu przypisaliśmy do zmiennych informacje dotyczące interesującego nas produktu , który chcemy dodać do koszyka. Poniżej pobieramy do zmiennych informacje, które widnieją na ekranie szczegółów produktu. Pobieramy je po to, aby porównać je z danymi poprawnymi. W przepadku zgodności uzyskamy pewność, że jesteśmy na karcie właściwego produktu i możemy kliknąć na przycisk dodający produkt do koszyka.

Pobieramy: status produktu, nazwę produktu, cenę, oraz ilość.

 

 

Lokalizujemy WebElement – przycisk dodający produkty do koszyka.

 

 

Poniższe instrukcje to wspomniane wcześniej porównanie właściwych danych produktu z danymi pobranymi z ekranu karty produktu. Instrukcja if-else sprawdza czy tytuł, cena, status oraz ilość zgadzają się z tym co jest wyświetlone na karcie produktu (tuż przed kliknięciem w przycisk ‚Do koszyka’). Jeśli warunek jest prawdziwy (dane się zgadzają) wówczas instrukcjąbuttonBasket.click() klikamy w przycisk dodający produkt do koszyka. Jeśli zaś jakieś dane się nie zgadzają, wówczas wypisujemy w konsoli komunikat: „Produkt nie został dodany do koszyka! Sprawdź czy wszystkie informacje o produkcie się zgadzają.

 

 

Pobieramy treść komunikatu jaka pojawia się w przypadku kliknięcia przycisku ‚Do koszyka’.

 

 

Końcowe instrukcje skryptu to sprawdzenie pobranej wcześniej treści komunikatu z właściwa treścią, jaka pojawia się w przypadku prawidłowo dodanego produktu do koszyka. Jeśli warunek jest prawdziwy (komunikat zgadza się z komunikatem prawidłowym), wówczas wyświetlamy treść komunikatu oraz wypisujemy w konsoli: „Test zakończony pomyślnie” w przeciwnym wypadku wypisujemy tekst: „Coś poszło nie tak! Produkt nie został prawidłowo dodany do koszyka.

 

 

Tak oto ukończyliśmy nasz skrypt dodający konkretny produkt do koszyka. Jak już wspomniałem na początku, skrypt został napisany bez użycia Page Object Pattern, co znacznie utrudnia nam czytanie takiego skryptu, mimo, iż jest on bardzo prostu i krótki. W przypadku bardziej złożonych skryptów, znacznie trudniej byłoby nam się połapać w kodzie a przede wszystkim go utrzymać. Dlatego w kolejnym materiale przedstawię ten sam skrypt, ale już w ujęciu Page Object Pattern i wtedy tez zobaczymy jak takie podejście (mimo, iż na początku trudniejsze do zrozumienia) ułatwi nam czytanie kodu, ale przede wszystkim zapewni nam późniejszą utrzymywalność kodu i szybkie reagowanie na zmiany które mogą występować się w kodzie html strony.

 

8 myśli na “Przykładowy skrypt: Dodanie produktu do koszyka”

Dodaj komentarz

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