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.
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.
Pobawiłam się tym trochę i te ciasteczka na Ama [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.
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 :)!
Tylko spokój nas może uratować 😀
I dzięki [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.
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 naclass Manage
- za podpowiedzią intelliJ'a. Czy to jakas specyfika testnG? Masz pomysł czemu tak?Prawdę mówiąc to nie wiem czemu to się tak zac [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.
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?
Halko! Nie wiem, nic takiego mi się nie zdarzyło [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.
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
Dobre oko! Dorzuciłam na samej górze lekcji kafe [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.
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