Selenium to potężne narzędzie, które może zautomatyzować podstawowe zadania i może być używane do scrapowania stron internetowych. Automatyzacja powtarzalnych zadań może pomóc zaoszczędzić dużo czasu. Jeśli jesteś programistą lub prowadzisz działalność gospodarczą, znajomość Selenium i Pythona może być bardzo pomocna w codziennych zadaniach.

To jest artykuł przyjazny dla początkujących. Jeśli nie wiesz nic o Selenie ani nawet o Pythonie, nie martw się, uprościłem ten artykuł w taki sposób, aby każdy mógł go łatwo zrozumieć i używać.

Co zrobimy?

Zanim przeczytasz cały artykuł, zastanówmy się, czego dowiesz się/dowiesz się z tego artykułu.

  1. Jak zainstalować i skonfigurować Pythona, Selenium i Chromedriver do automatyzacji
  2. Podstawy selenu
  3. Jak zautomatyzować strony internetowe — będziemy logować się do losowej witryny za pomocą wcześniej zdefiniowanych danych uwierzytelniających, po zalogowaniu pobieramy pewne dane, na przykład zalogowaną nazwę użytkownika i wylogowanie ze strony internetowej.

Wymagania:

Jest kilka narzędzi, które musisz mieć, zanim zaczniesz kodować.

  1. Python — upewnij się, że w systemie jest zainstalowany język Python. Możesz po prostu przejść do command prompt or terminal i wpisać python --version w systemie Windows, a w systemie Linux/macos python -version może działać. Jeśli nie masz zainstalowanego Pythona, tutaj znajduje się link instalacyjny.

Pobierz Pythona Python.org

W moim przypadku używam wersji Pythona 3.9.7

2. Selen:

Po zainstalowaniu Pythona musimy zainstalować bibliotekę Selenium, która pomoże nam w automatyzacji. Biblioteka to już napisany kod lub narzędzie, z którego możemy skorzystać. Zatem biblioteka Selenium ma kilka gotowych funkcji, które pomogą nam w interakcji z przeglądarkami internetowymi i wysyłaniu naszych poleceń.

Polecenie instalacji selenu: pip install selenium

Spowoduje to lokalną instalację Selenu w systemie.

3. Chromedriver:

WebDriver to narzędzie typu open source do automatycznego testowania aplikacji internetowych w wielu przeglądarkach. Chromedriver zapewnia nam środowisko lub przeglądarkę, którą możemy kontrolować za pomocą naszego skryptu odwiedzania stron internetowych.

Link do pobrania: ChromeDriver — WebDriver dla Chrome (chromium.org)

To wszystko, czego potrzebujemy w tym samouczku.

Teraz musimy skonfigurować nasz kod.

Uwaga: upewnij się, że wersja Chromedrivera i przeglądarki Chrome zainstalowanej w Twoim systemie jest taka sama. jeśli pobierasz najnowszą stabilną wersję ze strony sterowników Chrome, upewnij się, że Chrome jest zaktualizowany do najnowszej wersji. w przeciwnym razie pojawią się błędy.

Konfiguracja kodu

  1. Utwórz jeden folder, w którym będzie przechowywany nasz kod. W tym folderze dodaj chromedriver.exePrawdopodobnie po pobraniu otrzymasz zip. Wyodrębnij go i będzie miał plik .exe.

2. Stwórzmy nasz plik Pythona. Nazwałem to test.py

Tak będzie wyglądał mój folder selenium.

Kodowanie

najpierw zaimportujemy biblioteki, których potrzebujemy. Dodaj poniższy kod do pliku test.py.

from selenium import webdriver

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options

Wszystkie te biblioteki Selenium mają różne funkcje, których potrzebujemy.

Pierwszy import webdriver jest wymagany do komunikacji z przeglądarką internetową oraz nawiązania połączenia i zarządzania nim.

webDriverWait — Ta funkcja/klasa pomaga nam wydłużyć czas oczekiwania w naszych operacjach. Czasami w naszej automatyzacji musimy poczekać na odpowiedź serwera i podczas ładowania strony internetowej wait funkcji pomaga tam dodać ukryte i jawne oczekiwanie. Na przykład masz witrynę internetową, która po przesłaniu słowa generuje kombinacje ciągów znaków lub nazw. Musimy więc poczekać, aż strona internetowa lub witryna internetowa załaduje wygenerowane dane.

By i EC — Te funkcje zapewniają łatwy wybór elementów internetowych, takich jak pola wejściowe, przyciski, tekst itp., za pomocą ich właściwości Xpath lub CSS.

Options — Daje to dodatkowe opcje dla naszego sterownika internetowego. Chrome może działać w trybie bezgłowym lub na żywo. Headless to w zasadzie nasz kod będzie odwiedzał strony internetowe i usuwał dane, a my nie będziemy widzieć tego procesu. Bezpośrednio otrzymamy dane/wynik.

Z drugiej strony, jeśli chcesz, aby przeglądarka otworzyła się w twoim systemie przed tobą, wpisz automatyczne wprowadzanie i kliknij przycisk zgodnie z kodem. powinieneś wyłączyć tryb bezgłowy. Domyślnie jest wyłączona.

Przejdźmy teraz do następnego kodu.

options = webdriver.ChromeOptions()
# options.add_argument('--headless')
options.add_experimental_option('excludeSwitches', ['enable-logging'])
web = webdriver.Chrome(options=options,executable_path='chromedriver.exe')

Jak widać, jak dodać headless option, na razie skomentowaliśmy to, ponieważ chcę pokazać, jak działa automatyzacja.

skup się na ostatniej linii: web to nasz obiekt przechowujący właściwości chromedrivera. Teraz będziemy uruchamiać wszystkie nasze funkcje na tej nieruchomości.

Krok 1: Uruchomienie przeglądarki i odwiedzenie strony internetowej

Wybierzmy więc dowolną witrynę do automatyzacji. To jeden z moich projektów prostych operacji crudowych w sklepie internetowym.

Zaloguj się / Zarejestruj się (000webhostapp.com)

skopiuj link do witryny i naciśnij żądanie pobrania.

web.get("https://osmphp.000webhostapp.com/views/login.php");

Teraz uruchom kod. To polecenie get powinno otworzyć przeglądarkę i wyświetlić stronę logowania.

Gratulacje!! Właśnie pomyślnie otworzyłeś przeglądarkę i odwiedziłeś witrynę za pomocą kodu Selenium. Oznacza to, że wszystko zostało poprawnie zainstalowane i skonfigurowane.

Jeśli na tym etapie nie możesz otworzyć przeglądarki lub pojawia się jakikolwiek błąd, napisz w komentarzach. Na pewno ci pomogę.

Krok 2: Logowanie na stronie internetowej

Możesz zarejestrować się przy użyciu danych uwierzytelniających, ta witryna nie wymaga hasła jednorazowego. Pozostawiam to Tobie, aby zautomatyzować stronę rejestracji po uzupełnieniu tego kodu.

fałszywe dane uwierzytelniające do testów:

e-mail: [email protected]

hasło: 123123

W polach wejściowych musimy wpisać dane do logowania. W tym celu musimy wybrać te pola wejściowe i przekazać je za pomocą kodu, to jest nasze podstawowe wymaganie.

Aby to osiągnąć, musimy jednoznacznie zidentyfikować elementy HTML na stronie internetowej. Identyfikację elementów można wykonać za pomocą ścieżki JS, identyfikatora CSS, Xpath / pełnego XPath. Wszystkie są trochę takie same. Lubię używać Full Xpath, która całkowicie daje pełne unikalne identyfikatory. Skopiuj więc Xpath adresu e-mail i podobne pole hasła, jak pokazano na powyższym zrzucie ekranu.

try:
    # create a field object
    email = WebDriverWait(web, 20).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[1]/div/div/form/div[1]/input")))
    # click on it to enable the input field
    email.click()
    # insert the input using send_keys function
    email.send_keys("[email protected]")

except:
  pass

Zatem kod jest dobrze skomentowany. Pozwólcie jednak, że wyjaśnię cały proces.

Aby przekazać jakiekolwiek dane wejściowe, musimy wykonać 3 podstawowe kroki

A. Znajdź pole wejściowe na stronie internetowej — za pomocą XPath. Poniższy kod wykonuje pracę polegającą na wyborze pola wejściowego

email = WebDriverWait(web, 20).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[1]/div/div/form/div[1]/input")))

B. Kliknij / wybierz element do dodania danych wejściowych — metoda click wybiera pole wejściowe.

C. Dodaj wejście — send_keys("inputvalue") funkcja wysyła wartość przekazaną w cudzysłowie do wybranego elementu.

Podobnie wybierz pole hasła i przycisk za pomocą Xpath i użyj tylko metody click dla przycisku.

po czym zostaniesz zalogowany na stronie. Link do pełnego kodu Github znajduje się poniżej. sprawdź, czy chcesz wydrukować dane i proces wylogowania.

Link do kodu projektu GitHub: https://github.com/dhgavali/selenium-login-webpage-automation

Dziękuje za przeczytanie! Mam nadzieję, że w tym artykule wszystko było jasne. Obserwuj, aby otrzymywać informacje o rozwoju oprogramowania, automatyzacji i najnowszych aktualizacjach technologii.

Kim jestem?

Połączmy się 🤝😃

Portfolio: Witamy — Strona główna (dhgavali.me)

LinkedIn: Dhananjay Gavali | Linkedin