Automatyzacja list rozwijanych

W niniejszym materiale przedstawię automatyzację listy rozwijanej. Selenium WebDriver dostarcza nam klasę Select, dzięki której praca z listami rozwijanymi staję się prosta i intuicyjna. Klasa Select zapewnia nam metody oraz właściwości stricte do interakcji z listami.

Listing 1.0

 

Listing 1.0 pokazuje przykład listy rozwijanej – ważne jest to, że lista jest listą jednokrotnego wyboru ( nie jest to mulit lista z możliwością zaznaczenia więcej niż jednej wartości).

 

A tak wygląda struktura HTML elementu  Select, czyli przedstawionej wyżej listy:

 

 

Na podstawie poniższego kodu przedstawię przykłady na interakcje  z listami:

import org.openqa.selenium.WebElement;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.Select;
import java.util.concurrent.TimeUnit;

        public class SelectTest {

            public static void main(String[] args) {



                System.setProperty("webdriver.chrome.driver", "C:\\Users\\Tomasz\\Documents\\seleniumChromeDriver\\chromedriver.exe");
                WebDriver driver = new ChromeDriver();

                driver.get("http://automationpractice.com/index.php?id_product=1&controller=product");

                driver.manage().window().maximize();
                driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);



                Select size = new Select(driver.findElement(By.id("group_1")));


                //size.selectByValue("2");

                //size.selectByIndex(1);

                size.selectByVisibleText("M");

                String actualValue = size.getFirstSelectedOption().getText();


                WebElement sumbit = driver.findElement(By.name("Submit"));



                if(actualValue.equals("M"))
                {
                    System.out.println("Wybrany: rozmiar M");
                    sumbit.click();
                }
                else
                {
                    System.out.println("Wybrany rozmiar jest inny od M");
                }

            }
        }

 

 

Poniższa linijka to pobranie obiektu Select, który jest naszą listą. Jak widać listy rozwijane to specyficzny element na stronie i reprezentuje je klasa Select a nie jak np. buttony czy inputy klasa WebElement.

 

 

Kolejne trzy instrukcje to operacje zaznaczenia na liście odpowiedniej pozycji (My chcemy zaznaczyć pozycję z rozmiarem „M” – wszystkie trzy opisane sposoby wskazują na pozycję „M”).

Operacja zaznaczenia pozycji na liście przedstawiona jest na trzy rożne sposoby:

  • Pierwszy sposób to zaznaczenie poprzez wybranie odpowiedniej wartości (wartość atrybutu Value).
  • Drugi sposób to zaznaczani poprzez wybranie odpowiedniego indeksu(pamiętaj, ze numeracja indeksów zaczyna się od 0!)
  • Trzeci sposób to zaznaczanie pozycji poprzez wybranie odpowiedniej wartości tekstowej pozycji (czyli tego co dokładnie widzimy na liście na stronie www)

 

 

 

W tym miejscu pobieramy i zapisujemy do zmiennej tekstowej actualValue, wartość tekstową z aktualnie wybranej pozycji na liście. Metoda getFirstSelectedOption() zwraca aktualną zaznaczoną pozycje na naszej liście size.

 

 

 

Pobieramy WebElement z wykorzystaniem By.name – jest to przycisk dodający wybrane rzeczy do koszyka.

 

 

Kolejne instrukcje to operacja porównania wartości tekstowej ze zmiennej actualValue z wartością tekstowa „M” – chcemy się tutaj przekonać czy na pewno nasze poprzednie operacje zadziałały i faktycznie jest zaznaczona na liście pozycja „M”. Jeśli tak, to za pomocą instrukcji warunkowej if else wypisujemy odpowiedni komunikat „Wybrany rozmiar M” oraz klikamy w przycisk dodający rzecz do koszyka, a jeśli na liście jest zaznaczona inna wartość niż „M” wówczas wypisujemy komunikat: „Wybrany rozmiar jest inny niż M”.

 

4 myśli na “Automatyzacja list rozwijanych”

Dodaj komentarz

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