Testing / SharePoint

Selenium IDE, czyli jak zarobić więcej, robiąc mniej?

Kwiecień 25, 2017 12
Podziel się:

Jeżeli otworzyłeś ten artykuł to na pewno zainteresował cię temat testów automatycznych z wykorzystaniem Selenium IDE. Być może dopiero zaczynasz swoją przygodę z testami automatycznymi, albo zastanawiasz się czy opłaca się integrować testy automatyczne z platformą SharePoint 2013 czy innymi aplikacjami “webowymi”, nad którymi pracujesz.

W tym artykule poruszę głównie kwestie podstaw Selenium IDE, opiszę narzędzia, których będziesz potrzebował oraz stworzymy przykładowy przypadek testowy  w oparciu o Selenium IDE. Kolejny artykuł będzie dotyczył integracji testów automatycznych z platformą SharePoint 2013 oraz Office 365. Zapraszam do lektury 🙂

Na końcu artykułu znajdziesz odpowiedź na pytanie postawione w tytule.

Co to jest Selenium IDE?

Selenium IDE to zintegrowane deweloperskie środowisko do testowania Web aplikacji, przy pomocy Selenium. Selenium IDE jest zaimplementowany jako dodatek do przeglądarki Mozilla Firefox, przez co, na początku swojej przygody z testami automatycznymi, tester nie musi się przejmować o instalowanie skomplikowanych narzędzi, czy dodatkową konfigurację środowiska testowego. Po dodaniu pluginu do przeglądarki, narzędzie jest gotowe do pracy.

Aby łatwo zainstalować potrzebne wtyczki uruchom przeglądarkę Mozilla Firefox (najlepiej najnowszą wersję), a następnie wejdź w poniższy link. Aby dodać plugin wystarczy jedynie kliknąć przycisk + Zainstaluj

https://addons.mozilla.org/pl/firefox/addon/selenium-ide/

SeleniumPlugin e1484755405682 - Selenium IDE, czyli jak zarobić więcej, robiąc mniej?
Następnie, dla wygodnego użytkowania zainstaluj dodatkową wtyczkę, o nazwie Selenium IDE Button, która pozwoli Ci szybko uruchomić narzędzie Selenium IDE. Plugin dostępny jest pod tym linkiem:  

https://addons.mozilla.org/pl/firefox/addon/selenium-ide-button/

SeleniumPluginButton 1 e1484755368493 - Selenium IDE, czyli jak zarobić więcej, robiąc mniej?Ostatnią rzeczą, które również usprawni twoją pracę jest pobranie XPath Checker, który jest interaktywnym edytorem wyrażeń XPath, pozwalającym na proste lokalizowanie elementów Web aplikacji (więcej informacji w dalszej części bloga). Narzędzie dostępne jest pod linkiem:

https://addons.mozilla.org/pl/firefox/addon/xpath-checker/

SeleniumPluginXPath e1484755223115 - Selenium IDE, czyli jak zarobić więcej, robiąc mniej?
Po zainstalowaniu narzędzi jesteś gotowy do pracy, ale najpierw.. zrestartuj przeglądarkę 😛 Dodatki zainstalowane w przeglądarce do poprawnego działania potrzebują ponownego uruchomienia przeglądarki.

Mam już wszystkie potrzebne narzędzia. Co dalej?

Uruchom przeglądarkę Mozilla Firefox i kliknij w Menu opcji w prawym górnym rogu. Następnie kliknij Dodatki i sprawdź czy zainstalowane dodatki są obecne na liście. Rekordy Selenium IDE, Selenium IDE Button oraz XPath Checker powinny być widoczne na liście, jak poniżej.

Rozszerzenia e1484757036560 - Selenium IDE, czyli jak zarobić więcej, robiąc mniej?

 

Jeżeli dodatki pojawiły się na liście, wróć do widoku Menu przeglądarki, kliknij + Dostosuj, a następnie przeciągnij ikonę wtyczki Selenium IDE Button na górny pasek szybkiego wybierania. Po tym naciśnij klawisz Esc. Dostosuj 1 e1485430289632 - Selenium IDE, czyli jak zarobić więcej, robiąc mniej?

Pamiętaj! Dostosowanie środowiska do potrzeb osoby, która będzie z niego korzystać, a w tym przypadku do Twoich potrzeb jest bardzo ważne w pracy i pozwala zaoszczędzić czas, przez co możesz go poświęcić więcej na pilniejsze zadania, wymagające Twojej uwagi. Ta drobna modyfikacja, jaką jest wstawienie przycisku do paska narzędzi, pozwoli Ci na szybki dostęp do Selenium IDE, bez konieczności wchodzenia w zakładkę rozszerzeń.

Odpalamy!

Aby uruchomić Selenium IDE kliknij na ikonę, którą właśnie dodałeś do paska narzędzi w przeglądarce, a następnie wybierz opcję Open Selenium IDE as s Pop Up. Pozwoli to na otworzenie narzędzia w dodatkowym oknie, które możesz swobodnie modyfikować (przesuwać, zmieniać rozmiar).

OpenSelenium

Po kliknięciu, Twoim oczom powinien ukazać się ten oto widok:

SeleniumIDE e1484841974227 - Selenium IDE, czyli jak zarobić więcej, robiąc mniej?

Tak wygląda narzędzie, z którym będziesz pracować. Teraz możesz zauważyć, że nie były potrzebne instalacje żadnego dodatkowego oprogramowania, nie potrzebujesz posiadać żadnej licencji, ani pozwolenia, żeby pracować z Selenium IDE.

Zanim przejdziemy do tworzenia, analizowania i rozwiązywania problemów związanych z testami, przedstawię ci jeszcze główne elementy paska narzędzi Selenium IDE:

  • MainMenuZawiera wiele opcji potrzebnych do pracy. Opiszę jedynie zakładki Plik i Actions, gdyż jedynie one obecnie mają dla nas znaczenie.
  • Najważniejsze w zakładce Plik są:
    • New Test Case – tworzy nowy przypadek testowy
    • Open… – otwiera przypadek testowy
    • Save Test Case – zapisuje przypadek testowy
    • New Test Suite – tworzy nowy Test Suite (zbiór przypadków testowych)
    • Save Test Suite – zapisuje zbiór przypadków testowych (wszystkich aktualnie otwartych) – jeżeli testy twojej aplikacji składają się, załóżmy z 20 przypadków testowych, możesz je zapisać jako Test Suite. Plik ten będzie przechowywał informacje o tych testach, a powracając do testów automatycznych, wystarczy otworzyć zapisany test suite, aby otworzyły się wszystkie zapisane w nim testy.
  • Najważniejsze w zakładce Actions są:
    • Record – uruchamia lub zatrzymuje nagrywanie testu (działanie takie same, jak w przypadku używania czerwonego przycisku po prawej stronie),
    • Pause / Resume – zatrzymuje lub wznawia działanie aktualnie uruchomionego testu.
  • FastSlowJeżeli wartość tego przycisku ustawimy na Fast, testy będą wykonywane najszybciej jak to będzie możliwe. Odwrotny skutek otrzymamy jeśli ustawimy tu wartość na Slow, wtedy testy będą wykonywane wolno (niezalecane). Pamiętaj, żeby tak tworzyć i optymalizować swoje testy, żeby zawsze można było je uruchomić używając opcji Fast.BaseURL
  • Pole w które wpisujemy adres witryny lub serwera, na którym testowana jest aplikacja. Podczas testów z SharePointem ustawiam w tym miejscu adres serwera, np.: http://adresserwera/ .

Run1Test

  • Przycisk, który służy do wykonywania aktualnie wybranego przypadku testowego.

RunAllTests

  • Przycisk, którym uruchomimy wszystkie aktualnie otwarte w narzędziu przypadki testowe.

Przejdźmy do testowania.. Jak stworzyć swój test?

Nowy test case możesz utworzyć na trzy sposoby:

  • klikając prawym przyciskiem myszy w pole pod testem Untitled,
  • z zakładki Plik > New Test Case,
  • używając skrótu klawiszowego Ctrl + N.

My będziemy pracować na automatycznie stworzonym pliku Untitled. Najpierw jednak zapiszmy ten test case, równocześnie zmieniając jego nazwę na “MyTestCase”. Pamiętaj żeby testy Selenium IDE zapisywać do folderu, który później na pewno znajdziesz, bo na pewno będzie potrzeba, żeby do nich wrócić.

Widzisz to małe czerwone kółeczko w prawym, górnym rogu? Jest ono bardzo ważne, jeżeli nie najważniejsze w tym programie. Obecnie jest włączone! (jasnoczerwony – nagrywanie włączone, ciemnoczerwony – wyłączone), co pozwala na nasłuchiwanie naszych ruchów w przeglądarce i przekładanie ich na poszczególne kroki w Selenium IDE. Możesz przetestować ten mechanizm, wchodząc na przykładową stronę w przeglądarce i klikając na oślep, co popadnie 🙂 Ja też spróbuję.
Selenium1Test

Po zakończonym teście, kliknij wcześniej wspomniane czerwone kółko, aby program przestał nasłuchiwać. Powyżej widzisz stworzony przeze mnie test case, który jest przykładem, jak proste i przyjemne może być testowanie aplikacji za pomocą Selenium IDE.

Tworzenie przypadków testowych często trwa krótko, bo osobiście zalecam tworzenie krótkich testów. Dlaczego? Jeżeli zrobisz jeden test, który sprawdza działanie całej aplikacji, to nawet najmniejszy błąd przerwie test i być może większa część aplikacji nie zostanie przetestowania. Tworząc krótkie testy (a raczej optymalne) zabezpieczasz się przed sytuacją opisaną wyżej. Oczywiście nie zawsze się da stworzyć krótki przypadek, a czasem wręcz jest to niezalecane (np. przy uzupełnianiu i testowaniu formularzy). Wydaje mi się, że przy odrobinie zdrowego rozsądku twoje testy będą jak najbardziej optymalne.

Wiesz już jak tworzyć testy. Sposób opisany wyżej, czyli “wyklikiwanie” przypadków testowych i zapisywanie ich jak test case-y jest najprostszy i najszybszy. Lecz w życiu jak i w testowaniu nigdy nie jest kolorowo i zapewne gdybyś uruchomił/uruchomiła nagrany przypadek testowy, z  szybkością Fast nie ukończy on działania z wynikiem pozytywnym, ponieważ wymaga delikatnej korekty. Na ten przykład mój przypadek testowy “wysypał” się już w drugim kroku. Dlaczego?!

Podstawowe modyfikacje przypadków testowych, o których musisz wiedzieć!

Powyższy przypadek testowy zakończył swoje działanie niepowodzeniem, ponieważ program po wykonaniu pierwszego kroku od razu, jak najszybciej przechodzi do następnego. Tutaj najpierw wykonała się pierwsza operacja otwarcia przeglądarki google.com oraz wpisanie w wyszukiwarkę frazy “Blogersii”. Następnie program przeszedł do kolejnego kroku i próbował kliknąć w pierwszy link w wynikach wyszukiwania, którym jest blogersii, ale to nie zadziałało, ponieważ link nie zdążył się jeszcze pojawić. Dlatego program nie zakończy testu pozytywnie. W tym miejscu, jak widzisz warto wspomnieć o testowaniu swoich przypadków testowych i zoptymalizowaniu ich tak, by zadziałały zawsze.

Powyższy test zmodyfikujemy o bardzo prostą operację, jaką jest dodanie jednego kroku do naszego testu. Dodawanie komend możliwe jest poprzez kliknięcie prawym przyciskiem na krok, nad którym chcemy umieścić komendę i wybieramy opcję Insert New Command.InsertNewCommand

Tak oto dodałem komendę, która wykona się przed kliknięciem w link blogersii. Następnie wartość w kolumnie Command zmieniłem na waitForElementPresent. Jest to bardzo użyteczna metoda. Bardzo często przeze mnie używana. Jej działanie można opisać w kilku słowach: Czekaj, aż pojawi się link blogersii. Tak to działa. Teraz Selenium IDE zaczeka, aż pojawi się link blogersii, a krok trzeci wykona się dopiero po pojawieniu się elementu.
Modyfikacja

Testowanie z użyciem Selenium IDE wymaga ciągłej uwagi i logicznego podejścia do problemów. Jeżeli test się nie udaje warto również zajrzeć do zakładki Log, która dostępna jest nieco niżej:LogBardzo często dostępny jest tam jasny opis tego, dlaczego dany przypadek testowy nie ukończył swojego działania pomyślnie. Naprawdę warto korzystać z tej opcji.

Teraz wymienię najważniejsze komendy, z których najczęściej będziesz korzystał:

  • open – otwiera stronę/aplikację, której adres jest podany w polu Target,
  • pause – zatrzymuje test na czas, który jest podany w polu Target liczony w ms (milisekundach),
  • select – wybiera dany element (różni się od click tym, że używany jest wyłącznie w polach typu drop down menu lub gdy w pewnym miejscu mamy kilka opcji do wyboru),
  • type – wpisuje w wybrane pole tekstowe wartość, podaną w polu Target,
  • click – klika w wybrany element,
  • clickAndWait – klika w wybrany element i czeka na załadowanie się strony,
  • waitForElementPresent – czeka, aż ustawiony w polu Target element będzie obecny,
  • assertElementPresent – sprawdza czy ustawiony w polu Target element jest obecny,
  • sendKeys – uruchamia komendę kliknięcia w przycisk, który jest podany w polu Value,

Zaznaczę w tym miejscu, że definicję każdej z metod (oraz wszystkich dostępnych w narzędziu) można znaleźć w polu Reference, obok zakładki Log.

Nauczyłeś/Nauczyłaś się już jak używać narzędzia Selenium IDE oraz Selenium IDE Button. Został nam jeszcze ostatni: XPath Checker. XPath Checker pomaga mi często lokalizować atrybuty elementów (takie jak: class, id, text, span i inne). Lokalizowanie elementów za pomocą XPath, jest alternatywą tworzenia testów poprzez nagrywanie testów automatycznie przez program (nasłuchiwanie ruchów użytkownika w przeglądarce). Według mnie najbardziej optymalne jest nagranie testu i później wprowadzenie poprawek i modyfikacji, dla jak najlepszego jego działania. Nie rzadko może się zdarzyć, że automatyczny lokalizator elementu wyznaczy taki Target, że podczas uruchamiania testu nie zadziała on ani razu. Wtedy właśnie na ratunek przybywa XPath Checker, który pomoże zlokalizować poprawną ścieżkę. Aby skorzystać z narzędzia, musisz kliknąć prawym na element, który chcesz w programie zlokalizować.

XPathPo kliknięciu w link,  tak oto powinna wyglądać ścieżka XPath: (id(‘lst-ib’).

Xpaths

Może się również zdarzyć tak, że ścieżka XPath będzie zbyt skomplikowana lub będzie się składać z kilku elementów jednocześnie, jak poniżej i ciężko będzie coś z tego wyciągnąć.

Przykład

W takim przypadku możemy jeszcze skorzystać z Developer Tools, który również może pomóc zlokalizować atrybuty badanego elementu.

DevTools

W tym przypadku po kliknięciu prawym przyciskiem w pole tekstowe w przeglądarce google.pl, a następnie wybranie opcji Zbadaj element, wyświetli ci się powyższe okno (można również użyć klawisza F12). Jak widzisz w zaznaczonym elemencie widnieją takie dane jak: id, czy class, które śmiało możemy użyć do lokalizowania elementów. Ścieżka XPath w takim przypadku wyglądać będzie następująco:

  • //*[contains(@id, ‘lst-ib’)] lub
  • //*[contains(@class, ‘gsfi’)].

Używając komendy click z targetem @id lub @class stworzymy polecenie klikające w pasek tekstowy przeglądarki google.pl.

Pod tym linkiem: https://msdn.microsoft.com/pl-pl/library/ms256086(v=vs.110).aspx, znajdziesz przykładowe elementy XPath, które mogą Ci się przydać w pracy, bo zdarzą się elementy niemożliwe do zlokalizowania przez @id, czy @class

Garść ciekawostek i porad:

  • “Testuj swoje testy” – jeżeli chcesz na nich polegać i bez przeszkód ich używać, muszą być one niezawodne.
  • Jeżeli do testów regresji dodajesz nowy przypadek testowy, odtwórz go również w Selenium IDE, a następnie do już wcześniej stworzonego Test Suit zawierającego poprzednio stworzone testy regresji.
  • Pamiętaj, że Selenium IDE oraz wszystkie produkty Selenium podlegają licencji Apache 2.0.License

 

Na koniec wróćmy do pytania postawionego w tytule: Selenium IDE. Czyli jak zarobić więcej, robiąc mniej?

Zastanawiasz się, czy w ogóle możliwym jest zarobić więcej, wykonując mniej pracy? W artykule poznałeś czym są testy automatyczne z wykorzystaniem Selenium IDE. Teraz przedstawię Ci opcje, które mogą przynieść profity:

  • Programowanie testów automatycznych oszczędza czas twój i twojego zespołu, przez co możecie poświęcić więcej czasu na nowe lub już trwające projekty. Testerzy nie tracą czasu na codziennie testy regresywne.
  • Stworzone przez ciebie lub przez twój zespół testerski testy automatyczne, mogą stać się produktem, który możecie sprzedać klientowi za niemałe pieniądze. Pozwala na to licencja Apache 2.0, której podlega oprogramowanie Selenium IDE.
  • Wiedza o testach automatycznych może przyczynić się do wzrostu twojego wynagrodzenia, w myśl zasady: wzrastają kompetencje, wzrasta pensja, dlatego ciągły rozwój jest gwarantem na coraz to większe zarobki, a także pozycję w branży.
  • Wiedza, którą posiadłeś i posiądziesz w przyszłości, jeżeli chodzi o testy automatyczne może się przyczynić, że kiedyś zrobisz szkolenie dla współpracowników lub osób prywatnych, za co również weźmiesz pieniądze.

“Prawdziwa decyzja jest mierzona poprzez fakt podjęcia nowego działania. Jeśli nie ma działania – tak naprawdę nie podjąłeś decyzji” – Tony Robbins

3 / 5
Kategorie: Testing, SharePoint
Daniel Ciećkiewicz
Autor: Daniel Ciećkiewicz
I’m on my last year of college. I decided to take up a job in IT over one year ago. My career started with an internship at Betacom, and then at Sii. That’s how I joined SharePoint Competency Center, which provides SharePoint based solutions for external clients. At the moment, I’m a SharePoint Consultant supporting a number of different processes, so I’m never bored :)

Imię i nazwisko (wymagane)

Adres email (wymagane)

Temat

Treść wiadomości

komentarze(12)

avatar'
Radek
26 kwietnia 2017 Odpowiedz

Czy rzeczywiscie tak wygenerowane testy sa niezawodne?

    Daniel Ciećkiewicz
    21 sierpnia 2017 Odpowiedz

    Wygenerowane testy automatyczne w Selenium IDE muszą być krótkie, aby były niezawodne (optymalne). Jednak jeżeli wejdzie nowa wersja środowiska lub zaimplementowane zostaną zmiany w działaniu programów/procesów, wtedy testy muszą być dostosowywane do nowych wersji, a następnie utrzymywane. Mam przykłady testów w odpowiednich projektach, które działają po dziś dzień.

    Pozdrawiam

      avatar'
      Gość
      26 sierpnia 2017 Odpowiedz

      Każdy test, obojętne jak pisany czy nagrywany, jest na tyle niezawodny, na ile jest utrzymywany i poprawiany, i rozszerzany w ramach unowocześnianego oprogramowania które ma testować. Testy nagrywane albo nagrywane i potem poprawiane/rozszerzane w Selenim IDE wcale nie są mniej zawodne niż np pisane w WebDriver. Są prostsze, ale to nie oznacza że są zawodne. A przy okazji, ciekawe dlaczego niektórzy testerzy automatyczni tak bardzo negują znaczenie Selenium IDE, posuwając się nawet do stwierdzenia że testy nagrywane w nim nie są testami automatycznymi. A czym są, manualnymi? Oczywiście że są automatycznymi. Chodzi o to że testerzy automatyczni piszący testy np. w WebDriver czują się zagrożeni tym, że to co oni robią to może zrobić ktoś mniej obeznany z tematem, za pomocą prostszych narzędzi. Po prostu boją się o swoje stołki, i dlatego z "urzędu" negują takie narzędzia jak IDE. Chcą być hermetyczną kastą tajemniczych testerów, którzy roztaczają wokół siebie aurę tego że niby tylko oni mogą pisać testy automatyczne.

avatar'
Jacek
5 września 2017 Odpowiedz

Witam, mam pytanie właśnie zagłębiam się w tajniki testów automatycznych dla aplikacji webowych (i zainteresował mnie Twój tutorial) tylko mam problem z narzędziem Selenium IDE. Problem polega na tym że nie mogę uruchomić nagrywania zarówno za pomocą przycisku jak i opcji. Jesteś w stanie mi pomóc ?

    Daniel Ciećkiewicz
    22 września 2017 Odpowiedz

    Jedyne o co mogę zapytać, to czy zainstalowałeś Selenium IDE na Mozilli? Wiem o problemach z nagrywaniem, po zainstalowaniu w Chromie.

    Jeżeli jednak zainstalowałeś na Mozilli, usuń wtyczki z Selenium IDE, zaktualizuj przeglądarkę i zainstaluj najnowszą wersję Selenium IDE, krok po kroku, tak jak w tutorialu na "http://www.seleniumhq.org/docs/02_selenium_ide.jsp#installing-the-ide" lub tak jak opisałem powyżej.

    Pozdrawiam,
    Daniel

avatar'
Ff
12 września 2017 Odpowiedz

Warto wspomnieć o tym, że jeżeli zarabiasz pieniądze korzystając z Selenium IDE to rozważ wsparcie finansowe projektu. Ten dodatek już za chwilę nie będzie działał w nowym Firefoksie, a wykonywanie testów w nieaktualnych przeglądarkach może okazać się bezcelowe.

    Daniel Ciećkiewicz
    22 września 2017 Odpowiedz

    Hej,

    Gdy pisałem ten artykuł, nic nie wskazywało na to, że testy przestaną działać na nowej wersji przeglądarki. Wszyscy, którzy jednak dalej używają tego oprogramowania mają nadzieję na jakaś optymalizację lub aktualizację środowiska Selenium.

    Co do wsparcia finansowego projektu jak najbardziej klient płaci za testowanie tworzonego oprogramowania, ale dodatkowo, gdy doświadczony tester automatyczny tworzy testy, może zaoszczędzić wiele czasu testerom manualnym. Następnie takie testy można w pewnych sytuacjach sprzedać. Jednak nie to jest najważniejsze. Projekt wyceniany na wstępie, może mieć niższą, atrakcyjną dla klienta cenę, dlatego, że jedna godzina programowania takiego testera automatycznego, może oszczędzić nawet do kilkunastu godzin testera manualnego. Bo test jest tworzony raz, a uruchamiany kilkadziesiąt - set razy. Tester manualny musiałby testować to samo sam, za każdym razem.

    Pozdrawiam,
    Daniel

avatar'
Konrad
26 października 2017 Odpowiedz

Witam,
mam pytanie dotyczące funkcjonalności Selenium IDE. Czy można zarządzać kolejnością Test Casów w jednym Test Suicie? Np. mam TS, ale chciałbym dodać jeszcze nowy TC, gdzieś w środek TS, a nie mogę tego przenieść, bo nowy przypadek dodaje się tylko na koniec.
Drugie pytanie, jak można wpisywać wartości w pola ograniczone np. pole Numer telefonu i dostępne są tylko cyfry. Selenium IDE z marszu mi nie nagrywa tego, tylko pomija to pole.

Pozdrawiam,
Konrad

    Daniel Ciećkiewicz
    8 listopada 2017 Odpowiedz

    Hej,

    Jeżeli chodzi o Twoje pierwsze pytanie to proponuję zrobić nowy test suit i tam już odpowiednio układać sobie test casy.
    Co do drugiego, to wartości w tego typu polach możesz ustawiać w następujący sposób:

    Command: type
    Target: //*[contains(@id, 'id pola')]
    Value: 123456789

    Pozdrawiam

avatar'
Marcin
1 grudnia 2017 Odpowiedz

Selenium IDE nie działa w najnowszym Firefoxie. Czy można jeszcze z niego korzystać?

    Daniel Ciećkiewicz
    5 grudnia 2017 Odpowiedz

    Hej,

    Selenium IDE nie działa już z wersją przeglądarki 55 i wyższej. Ja mam obecnie wersję 57.0.1 i faktycznie nie działa.

    Polecam zamiennik, bardzo popularny obecnie, kompatybilny z nowymi wersjami przeglądarki Mozilla Firefox - Katalon Recorder (Selenium IDE for Firefox 55+) . Wg mnie może działać nawet lepiej niż "stare" Selenium IDE.

    Link do pobrania w Mozilli: https://addons.mozilla.org/en-US/firefox/addon/katalon-automation-record/

    Pozdrawiam,
    Daniel

avatar'
Greg
27 lutego 2019 Odpowiedz

Selenium IDE to narzędzie które warto poznać i szybko porzucić, bo są lepsze ; ]

Zostaw komentarz