Zapisy otwarte! Dołącz do kursu Selenium w Javie lub Selenium w C#. Tylko do 23.09.2021 do godz. 21:00. Zapisz się tutaj.

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 dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Wsparcie merytoryczne

Nie masz dostępu do wsparcia merytorycznego dla tego kursu. Wykup dostęp albo zaloguj się, by móc zadawać pytania.

  1. 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
      • 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
  2. 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
  3. 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
      • 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
          • 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