• Przejdź do głównej nawigacji
  • Przejdź do treści
  • Przejdź do głównego paska bocznego
  • Przejdź do stopki
Testelka.pl

Testelka.pl

Testelka.pl - o technologiach w testowaniu oprogramowania

  • Kursy
    • DARMOWY: Java dla testerów
    • Selenium w Javie
    • Selenium w C#
    • Testy API w REST Assured
    • Selektory CSS
    • XPath
  • Materiały na raz
  • Blog
  • O Eli
  • Zaloguj się
  • DOŁĄCZ

Selenium 8. Ciasteczka

Strona główna > Kursy > Kurs Selenium w Javie > Selenium 8. Ciasteczka

W tej lekcji pokażę Ci jak można wykonywać akcje na ciasteczkach w Selenium.

Nieobliczalne zachowanie ciasteczek na Amazonie 🤯

Ciasteczka na Amazonie zachowują się teraz trochę inaczej w stosunku do tego, co pokazuję w filmie. Na samym dole tej lekcji zobaczysz wyjaśnienie wraz z kodem testów jak to teraz powinno wyglądać.

Kalendarz i wyświetlanie daty w narzędziach developerskich

W tej lekcji będziemy tworzyć ciasteczka, których datę wygaśnięcia ustawimy za pomocą obiektu klasy GregorianCalendar. Gdy tworzymy obiekt tej klasy tak jak na filmie dostajemy nasze lokalne ustawienia czasu. W narzędziach deweloperskich natomiast wyświetla się czas w GMT dlatego będzie tam godzina różnicy względem tego, co przekażemy. Dodatkowo, o czym nie mówię na filmie, miesiące są numerowane od 0, czyli Styczeń to 0, a nie 1. My używamy 11 czyli chodzi o grudzień. Jeżeli wolisz wygodniejszą i bardziej słownomuzyczną formę możesz też taki obiekt stworzyć jak poniżej:
new GregorianCalendar(2021, Calendar.DECEMBER, 31)

Ciasteczka to informacje, które serwis internetowy wysyła do przeglądarki. Są one zapisywane na urządzeniu końcowym, czyli np. Twoim komputerze. Mają formę ciągu znaków. Używane są na przykład do zapamiętania Twoich preferencji wyświetlania informacji na podanej stronie. Ciasteczka używa się też na przykład do utrzymywania sesji. W testach możemy np. chcieć sprawdzić właśnie kiedy wygasa ciasteczko sesyjne.

Selenium dostarcza metody umożliwiające:

  • pobranie ciasteczka lub ciasteczek,
  • dodanie ciasteczka,
  • usunięcie wszystkich lub wybranego ciasteczka.

Opis metod, o których mówię, znajdziesz także w dokumentacji Selenium pod tym linkiem: WebDriver.Options.

Kod

Podrzucam też zaktualizowany kod testów, które pokazuję na filmie. Ciasteczka na Amazonie zaczęły zachowywać się w trochę nieoczywisty sposób, a ich ilość już na samym początku nie jest stała (i nie jest to kwestia poczekania na nie przez jakiś czas aż się wszystkie doładują). W poniższym kodzie zostały użyte inne asercje i w ogóle są one dużo lepsze biorąc pod uwagę czy sprawdzamy, bo czy naprawdę obchodzi nas ile jest ciasteczek, po dodaniu naszego dodatkowego? Raczej będzie nas obchodzić, czy takie ciasteczko jest na liście ciasteczek.

W poniższych testach używam też asercji assertNull oraz assertNotNull, które jak sama nazwa wskazuje sprawdzają czy to, co podamy w parametrze jest lub nie jest nullem. Jest nam to potrzebne do sprawdzenia czy ciasteczko się usunęło albo dodało, bo metoda getCookieNamed zwraca nam null, gdy nie znajdzie ciasteczka o podanej przez nas nazwie.

Dodatkowo zmieniłam też datę w jednym z ciasteczek, które tworzymy w teście, ponieważ z datą wsteczną się nie doda.

Ukryta treść

Nie masz aktywnej subskrypcji. Wykup subskrypcję albo zaloguj się, by móc zobaczyć pełną lekcję.

Reader Interactions

Komentarze

Nie masz aktywnej subskrypcji. Wykup subskrypcję albo zaloguj się, by móc komentować.

Komentarze

  1. katsali napisał

    3 marca, 2020 o 7:43 pm

    Jaki może być powód tego, że cookies mi się nie usuwają? getCookies, getCookieNamed przechodzą mi na zielono, ale delete nie działa - asercja wyrzuca mi ustawiony w niej komunikat. Dodatkowo po każdym teście zwiększa mi się liczba cookies w actual. DeleteAll zadziałało.

    Odpowiedz
    • Ela Sądel napisał

      4 marca, 2020 o 9:59 am

      Pobawiłam się tym trochę i te ciasteczka na Ama [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

      Odpowiedz
      • katsali napisał

        4 marca, 2020 o 11:36 am

        Dziękuję za odpowiedź!!!! Bo wczoraj przeżyłam małe załamanie nerwowe :))) Ciastka zachowywały się dokładnie tak jak piszesz: raz było 10 potem 11. A, że jestem bardzo początkująca w temacie to niezbyt wiedziałam jak to ugryźć. Jeszcze raz wielki dzięki!!!!
        Kurs jest świetny :)!

        Odpowiedz
        • Ela Sądel napisał

          4 marca, 2020 o 12:06 pm

          Tylko spokój nas może uratować 😀
          I dzięki [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

          Odpowiedz
  2. katsali napisał

    4 marca, 2020 o 4:58 pm

    to jeszcze mam jedno pytanie: jak użyłam nowego kodu (używam testNG to musiałam detale pozmieniać) to test mi poszedł na zielono dopiero jak zamiast public class Manage zmieniłam na class Manage - za podpowiedzią intelliJ'a. Czy to jakas specyfika testnG? Masz pomysł czemu tak?

    Odpowiedz
    • Ela Sądel napisał

      4 marca, 2020 o 5:44 pm

      Prawdę mówiąc to nie wiem czemu to się tak zac [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

      Odpowiedz
  3. Iwona Czeladko napisał

    27 sierpnia, 2020 o 6:24 pm

    Hej, gdy dodajemy newCookie, expiry jest różne między tym co zadeklarowaliśmy w obiekcie newCookie, a nowo dodanym cookie w devtoolsach. W devtoolsach pokazuje miesiąc do przodu i dzień do tyłu. Dlaczego tak jest?

    Odpowiedz
    • Ela Sądel napisał

      28 sierpnia, 2020 o 9:16 am

      Halko! Nie wiem, nic takiego mi się nie zdarzyło [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

      Odpowiedz
      • Iwona Czeladko napisał

        28 sierpnia, 2020 o 3:43 pm

        Na twoim filmiku też tak jest w 21 min 23sek w expires (devtoolsy) jest data 2019-12-30. W newCookie masz m.in w konstruktorze new GregorianCalendar(2019,11,31).getTime() .
        https://snipboard.io/bCjL2m.jpg

        Odpowiedz
        • Ela Sądel napisał

          28 sierpnia, 2020 o 5:01 pm

          Dobre oko! Dorzuciłam na samej górze lekcji kafe [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

          Odpowiedz
          • Iwona Czeladko napisał

            28 sierpnia, 2020 o 5:51 pm

            Dzięki za wyjaśnienie! 😉 Z tym dniem już się trochę domyślałam, bo coś tam przyobserwowałam w zmiennych w debuggerze. Ale dzięki za dobre wyjaśnienie obu rzeczy, teraz już zapamiętam :-). Pozdrawiam

Pierwszy Sidebar

LEKCJE W KURSIE

  • Przygotowanie środowiska programistycznego (DARMOWA LEKCJA)
  • Inicjalizacja drivera i demo Selenium (DARMOWA LEKCJA)
  • Nawigacja pomiędzy stronami (DARMOWA LEKCJA)
  • Zamykanie przeglądarki lub sesji (DARMOWA LEKCJA)
  • Zadanie: zamykanie przeglądarki i sesji (DARMOWA LEKCJA)
  • Tytuł strony, URL i jej źródło
  • Zadanie: pobieranie tytułu, URLa i źródła strony
  • Ciasteczka
  • Zadanie: ciasteczka
  • Rozmiar i pozycja okna przeglądarki
  • Zadanie: rozmiar i pozycja okna przeglądarki
  • Metody lokalizujące
  • Mechanizmy lokalizujące: nazwa klasy, id, atrybut name, nazwa taga
  • Mechanizmy lokalizujące: tekst linku
  • Zadanie: proste lokatory
  • Mechanizmy lokalizujące: wprowadzenie do selektorów CSS i XPath
  • Selektory CSS: tag, id, klasa
  • Selektory CSS: atrybuty i łączenie warunków
  • Zadanie: atrybuty i łączenie warunków w selektorach CSS
  • Selektory CSS: fragment wartości atrybutu
  • Zadanie: fragment wartości atrybutów w selektorach CSS
  • Selektory CSS: relacje między elementami
  • Zadanie: relacje w selektorach CSS
  • XPath: atrybuty i tagi
  • XPath: fragment atrybutu i tekst
  • Zadanie: atrybuty i tekst w XPath
  • XPath: relacje między elementami
  • Zadanie: relacje między elementami w XPath
  • Timeouty: oczekiwanie na pojawienie się elementu i załadowanie strony
  • Interakcje z WebElementami: klikanie w elementy i wprowadzanie tekstu
  • Interakcje z WebElementami: wgrywanie pliku z dysku
  • Zadanie: interakcje z WebElementami
  • Wstęp do zasad programowania: DRY
  • Wstęp do zasad programowania: KISS
  • Wstęp do zasad programowania: YAGNI
  • Zadanie: wstęp do zasad programowania
  • Czekanie na warunki: ExplicitWait
  • Czekanie na warunki: ExpectedConditions
  • Zadanie: czekanie na warunki
  • Metody na WebElementach: pobieranie informacji o elementach i findElement()
  • Zadanie: metody na WebElementach
  • Ramki
  • Zadanie: ramki
  • Wykonywanie JavaScriptów
  • Zadanie: wykonywanie JavaScriptów
  • Obsługa alertów
  • Zadanie: obsługa alertów
  • Praca na kilku oknach przeglądarki
  • Zadanie: praca na kilku oknach przeglądarki
  • Listy rozwijane
  • Zadanie: listy rozwijane
  • Gesty w Selenium: wstęp
  • Gesty w Selenium: klik, podwójny klik oraz prawy przycisk myszy
  • Gesty w Selenium: zdarzenia klawiatury i wysyłanie tekstu
  • Zadanie: gesty w Selenium
  • Gesty w Selenium: przesuwanie obiektów
  • Zadanie: przesuwanie obiektów
  • Web Storage: metody na Local Storage i Session Storage
  • Web Storage: użycie JavaScript
  • Zadanie: WebStorage
  • Zrzuty ekranu: wykonywanie screenshotów strony i elementów
  • Zrzuty ekranu: przykład użycia screenshotów
  • Inicjalizacja driverów: Chrome, Firefox, Opera, Internet Explorer, Edge
  • Konfiguracja Selenium Grid
  • RemoteWebDriver: inicjalizacja drivera wspierającego testy w trybie rozproszonym
  • Projekt testowy
  • Omówienie projektu testowego: testy koszyka
  • Omówienie projektu testowego: testy płatności
  • Omówienie projektu testowego: testy metod płatności
  • Page Object Model: wprowadzenie
  • Page Object Model: jak zacząć budować własny framework testowy
  • Page Object Model: kolejna klasa Page Object
  • Zadanie z POM: przepisanie testu addOneProductTenTimesTest()
  • Page Object Model: refaktoryzacja kodu i klasa BaseTest
  • Page Object Model: refaktoryzacja kodu i klasa BasePage
  • Page Object Model: refaktoryzacja i nowa metoda w klasie CartPage
  • Page Object Model: części wspólne różnych stron na przykładzie HeaderPage
  • Zadanie z POM: części wspólne stron (stopka w POM)
  • Zadanie z POM: przepisanie pozostałych testów koszyka
  • Zadanie z POM: przepisanie testu płatności bez zakładania konta cz. 1
  • Zadanie z POM: przepisanie testu płatności bez zakładania konta cz. 2 - wprowadzanie danych karty
  • Page Object Model: DriverFactory
  • Plik konfiguracyjny
  • Wzorzec Singleton na przykładzie konfiguracji
  • Synchronizacja w Singletonie i konfiguracja bez Singletona
  • Dane testowe z pliku
  • PageFactory: inicjalizacja elementów i FindBy
  • Wady i zalety PageFactory oraz pozostałe możliwości

Footer

Elzbieta Natalia Sadel
Av. de las Postas 21 6 C
29014 Málaga
Hiszpania
NIF: Y7882076J

Zostań trenerem!

Regulamin
Polityka prywatności
Polityka wsparcia w ramach członkostwa

Koszulki i torby dla testerów

Pomoc
Kontakt

Poskładane z 💛 przez Automatela.pl