Zacznijmy od tego, dlaczego to jest ważne. Automatyzacja rutynowych zadań — to jak mieć domowego robota, który zrobi za Ciebie całą nudną robotę, a Ty możesz cieszyć się życiem. Selenium to jeden z takich "robotów", ale w świecie programowania. Potrafi wchodzić w interakcje z witrynami internetowymi, jakby to robił człowiek. Wyobraź sobie, że Twój bot może automatycznie zbierać dane, wypełniać formularze lub sprawdzać ceny ulubionych produktów. Super, prawda?
Ale zanim zaczniesz projekt, ważne jest określenie, co dokładnie i jak zamierzamy zautomatyzować. Przyjrzyjmy się krokom, które pomogą nam zaplanować projekt.
1. Analiza wymagań projektu
Analiza zadań stawianych przed projektem
W świecie programowania, jak i w kuchni, zanim zaczniesz gotować, musisz zrozumieć, co chcesz osiągnąć na końcu. Analogią może być przepis: mamy listę "składników" — danych, które musimy zebrać. Następnie decydujemy, jaką "kulinarną" metodą będziemy je wydobywać.
Wyobraź sobie, że pracujesz w firmie marketingowej i musisz zbierać dane o konkurencji. Oto pytania, które możesz sobie zadać:
- Jakie dane są mi potrzebne? Na przykład ceny, opinie, oceny, itp.
- Ile czasu to zajmie, jeśli robić to ręcznie?
- Jakie strony internetowe lub usługi będę używać?
Tworzenie listy potrzebnych danych i metod ich zbierania
Tworzenie listy potrzebnych danych to ważny krok. Pomaga upewnić się, że Twój bot zbierze wszystkie ważne informacje i niczego nie zapomni, jakby to były zagubione skarpetki w pralce.
Powiedzmy, że planujemy zbierać dane o produktach na stronie sklepu internetowego. Potrzebujemy:
- Nazwy produktów.
- Ceny.
- Informacji o dostępności.
Teraz, gdy mamy listę danych, musimy pomyśleć o tym, jak je zbierać. Możemy używać metod Selenium, takich jak find_element_by_id, find_elements_by_class_name i innych. Ale o tym pogadamy na następnym wykładzie, teraz tylko wiedz, że bot będzie nauczony znajdować odpowiednie informacje jak doświadczony detektyw!
Ważne: przykłady poniżej używają składni Selenium 3. W Selenium 4 metody find_element_by_* zostały usunięte (ostatecznie od wersji 4.3.0): zamiast nich używa się uniwersalnej metody find_element() ze strategią z klasy By. Dlatego po każdym przykładzie podajemy jego wersję dla Selenium 4.
Wybór odpowiednich stron internetowych i usług do zbierania danych
Teraz czas na ważną decyzję: wybór źródeł danych. To jak wybór odpowiedniego źródła w wywiadzie — szukamy wiarygodnych i dobrze zorganizowanych stron internetowych.
Powiedzmy, że zbieramy dane o książkach. Możemy wybrać strony takie jak Amazon czy Goodreads. Ważne jest jednak, aby upewnić się, że wybrane strony nie mają ograniczeń dotyczących zbierania danych. Mała wskazówka: zwróćcie uwagę na pliki robots.txt — zazwyczaj zawierają informacje, czy web scraping jest dozwolony na stronie.
2. Planowanie etapów rozwoju
Kolejność działań i przypisanie ich do zadań
Gdy mamy wszystkie składniki, czas zaplanować proces "gotowania". W kontekście programowania kolejność działań ma kluczowe znaczenie. To jak przestrzeganie kolejności przy pieczeniu tortu: najpierw trzeba wyrobić ciasto, potem piec. Dla naszego projektu można to zrobić tak:
- Logowanie na stronie (jeśli wymagane).
- Wyszukiwanie i zbieranie danych.
- Zapisywanie danych w wymaganym formacie.
Jakie zadania będą zawarte w każdym etapie? Pamiętaj, masz pełną swobodę dodawania kroków do optymalizacji procesu.
Planowanie zasobów i podział zadań
Pracujesz w zespole? Planowanie zasobów i podział zadań to klucz do sukcesu projektu. Określ, kto będzie odpowiedzialny za pisanie kodu, kto za testowanie, a kto za zadania domowe... to znaczy, za dokumentację.
Pracujesz sam? Bez obaw! Po prostu podziel zadania na mniejsze części i ustaw sobie terminy. Nie zapomnij sprawdzać siebie — to pomoże uniknąć pisania "magicznego kodu", który trudno debugować (wszyscy wiemy, że czasami może nie być za przyjazny).
Ocena ryzyk i sposoby ich minimalizacji
Każdy projekt to mała przygoda, a jak w dobrym filmie przygodowym, mogą pojawić się pułapki. Rozważ potencjalne ryzyka swojego projektu:
- Zmiany w strukturze strony, z którą pracuje bot.
- Ograniczenia dotyczące liczby zapytań do strony.
- Możliwe błędy w kodzie.
Jak zminimalizować te ryzyka? Zawsze miej plan "B" i bądź gotowy na adaptację. Na przykład, używaj elastycznej struktury kodu, aby łatwo zmieniać zbiór danych, gdy strona się zmienia. Albo ustaw limit na liczbę zapytań w jednostce czasu, aby uniknąć blokad.
Planowanie i zbieranie wymagań to fundament Twojego projektu. Na początku może się wydawać, że to jak praca architekta projektującego budynek: trzeba wziąć pod uwagę każdy szczegół. Ale kiedy już położysz ten fundament, Twoja automatyzacja będzie działać jak prawdziwe Stradivariusy — gładko i perfekcyjnie.
Gotów na zanurzenie się w świat automatycznych botów? Na następnym wykładzie zaczniemy tworzyć funkcje do wyszukiwania i interakcji z elementami stron internetowych. Będzie zabawnie — jak w filmie o Jamesie Bondzie, tylko nasz bot będzie agentem 404!
3. Historia powstania Selenium
W 2004 roku, programista Jason Huggins, pracując w ThoughtWorks, zetknął się z koniecznością automatyzacji testowania wewnętrznej aplikacji webowej do zarządzania czasem pracy i wydatkami. Aby uprościć ten proces, stworzył narzędzie w JavaScript, nazwane JavaScriptTestRunner, które później stało się znane jako Selenium Core. Ciekawostką jest, że nazwa "Selenium" powstała z żartu: Huggins zauważył, że selen jest antidotum na zatrucie rtęcią, co było aluzją do konkurencyjnego produktu "Mercury Interactive".
To narzędzie szybko przyciągnęło uwagę współpracowników, a wkrótce do projektu dołączyli inni programiści, tacy jak Paul Hammant, który zasugerował otwarcie kodu źródłowego i rozszerzenie możliwości Selenium do obsługi różnych języków programowania. Tak rozpoczęła się ewolucja Selenium, które stało się jednym z najpopularniejszych narzędzi do automatyzacji testowania aplikacji webowych.
GO TO FULL VERSION