Selenium

Automatyzacja przeglądarki za pomocą Selenium (Python)

Automatyzacja przeglądarki za pomocą Selenium (Python)
SELEN to narzędzie internetowe i open source, które służy do sterowania przeglądarką internetową za pomocą wielu języków programowania. Jest to narzędzie innej firmy i jest dostępne dla wielu języków programowania (e.sol. Java, Python, C#, PHP itp.). Obsługuje prawie wszystkie przeglądarki. W tym samouczku przyjrzymy się, jak używać Selenium w Pythonie, ponieważ Python zapewnia wygodne środowisko do korzystania z tego narzędzia. Selenium API dla Pythona pozwala Twojemu programowi bezpośrednio kontrolować przeglądarkę w podobny sposób, jak robi to człowiek. Może otwierać dla Ciebie nowe zakładki, wypełniać informacje, przesyłać formularze, klikać różne linki i inne podobne działania. Tutaj zobaczymy, jak zautomatyzujemy naszą przeglądarkę internetową za pomocą selenu w Pythonie.

Instalacja selenu

Przed użyciem SELEN moduł w pythonie, musimy go zainstalować. Uruchom następujące polecenie w terminalu, aby go zainstalować.

pip zainstaluj selen

LUB

pip3 zainstaluj selen

To zainstaluje SELEN moduł i teraz jest gotowy do użycia.

Sterowniki sieciowe

Przed zautomatyzowaniem przeglądarki internetowej za pomocą modułu SELENIUM wymagany jest sterownik sieciowy wybranej przeglądarki. Aby zautomatyzować przeglądarkę Chrome, musimy mieć sterownik internetowy Chrome. Ścieżka, w której umieszczony jest plik sterownika sieciowego, jest przekazywana jako argument. Sterownik sieciowy współdziała z przeglądarką internetową za pośrednictwem protokołu. Kliknij poniższy link, aby pobrać sterowniki internetowe różnych przeglądarek.

https://www.selen.org/pobierz/

Pierwsze kroki

Po zainstalowaniu wymaganych modułów możesz otworzyć Python CLI i zacząć grać w przeglądarce. Więc najpierw zaimportujmy webdriver i inne moduły, te moduły i klasy pozwolą twojemu programowi w Pythonie na wysyłanie naciśnięć klawiszy i innych informacji do twojej przeglądarki.

C:\Użytkownicy\Usama Azad>python
Pyton 3.6.4 (v3.6.4:d48eceb, 19 grudnia 2017, 06:54:40) [MSC v.1900 64-bitowy (AMD64)] na win32
Wpisz „pomoc”, „prawa autorskie”, „kredyty” lub „licencja”, aby uzyskać więcej informacji.
>>> z webdriver importu selenu
>>> z selenu.webdriver.wspólny.import kluczy Klucze
#ścieżka do sterowników Chrome
>>> kierowca = webdriver.Chrome('C:\chromedriver')

Spowoduje to otwarcie nowego okna przeglądarki Chrome. Teraz możesz uzyskać selen, aby przejść do dowolnej witryny za pomocą .metoda get(). Ta metoda otwiera witrynę i czeka, aż się załaduje, a następnie możesz wprowadzić następne polecenie.

>>> kierowca.pobierz("https://www.Facebook.pl")

Jak znaleźć elementy na stronie internetowej

Określony element na stronie internetowej możemy znaleźć w następujący sposób.

Lokalizowanie elementów za pomocą Selenium

W celu zlokalizowania elementów na stronie internetowej używamy 'znajdź_element' metoda. Poniżej znajdują się 'znajdź_element' metody dostępne w SELEN.

Korzystając z powyższych metod, możemy zlokalizować element na stronie internetowej i wykorzystać go w naszym kodzie automatyzacji.

Kliknięcie na inną stronę internetową Elementy

Metoda click() w selen może być używana do klikania w różne linki i elementy przycisków, które znalazłeś za pomocą powyższych metod. Na przykład, chcesz kliknąć „Zapomniałem konta?”na stronie na Facebooku

>>> przycisk_linku = sterownik.find_element_by_link_text('Zapomniane konto?')
>>> link_button.Kliknij()

Wyślij klucze specjalne

Selenium posiada również moduł, który umożliwia wysyłanie kluczy specjalnych (e.g, Enter, Escape, Page down, page up itp.) podczas przeglądania internetu. Musisz zaimportować ten moduł za pomocą następującego polecenia

>>> z selenu.webdriver.wspólny.import kluczy Klucze

Na przykład czytasz artykuł w Wikipedii o historii Stanów Zjednoczonych, ale jesteś zbyt leniwy, by po chwili nacisnąć klawisz strzałki W DÓŁ. Możesz zautomatyzować, wysyłając ten klucz do przeglądarki za pomocą Selenium

z selen importu webdriver
z selenu.webdriver.wspólny.import kluczy Klucze
czas importu
kierowca = webdriver.Chrome('C:\chromedriver')
#Otwórz link do artykułu za pomocą metody get
kierowca.pobierz("https://pl.Wikipedia.org/wiki/Stany Zjednoczone")
#Zacznij od początku strony
elem = kierowca.find_element_by_tag_name('html')
podczas gdy prawda:
 
czas.sen(5)
elem.send_keys(Klucze.NA DÓŁ)

Jak zautomatyzować przeglądarkę

W tej sekcji zobaczymy, jak zautomatyzować naszą przeglądarkę internetową za pomocą niektórych przypadków użycia.

Zaloguj się automatycznie do serwisów społecznościowych

Dzięki automatyzacji sieci możesz łatwo zautomatyzować proces logowania. Jeśli regularnie sprawdzasz swoje serwisy społecznościowe o określonej godzinie (powiedzmy o 20:00), dobrze jest zautomatyzować ten proces. Poniżej znajduje się kod do automatyzacji procesu logowania dwóch serwisów społecznościowych „facebook” i „twitter” za pomocą SELEN moduł w Pythonie.

# importowanie webdrivera z modułu selen
z selen importu webdriver
 
# importowanie specjalnych kluczy z selenu
z selenu.webdriver.wspólny.import kluczy Klucze
 
# tworzenie obiektu 'driver' dla 'Google-Chrome'
kierowca = webdriver.Chrome('ścieżka do sterownika Chrome')
 
# maksymalizacja okna
kierowca.okno_maksimum()
 
# otwarcie facebooka
kierowca.otrzymać('http://www.Facebook.com')
 
# lokalizowanie elementu „e-mail lub telefon” za pomocą atrybutu „id”
nazwa_użytkownika = kierowca.find_element_by_id('e-mail')
 
# Wprowadzanie nazwy użytkownika lub adresu e-mail na Facebooku
Nazwa Użytkownika.send_keys('Wprowadź nazwę użytkownika/adres e-mail')
 
# lokalizowanie elementu „Hasło” za pomocą atrybutu „id”
hasło = kierowca.find_element_by_id('pass')
 
# wpisywanie hasła do facebooka
hasło.send_keys("Wprowadź hasło")
 
# zlokalizowanie elementu „przycisk logowania” za pomocą atrybutu „id” i naciśnięcie „Enter”
kierowca.find_element_by_id('u_0_b').send_keys(Klucze.WCHODZIĆ)
 
# otwieranie nowej zakładki na Twitterze
kierowca.execute_script("okno.otwórz('http://www.świergot.pl', 'tab2');")
 
# przejście do nowej karty
kierowca.switch_to_window('tab2')
 
#lokalizacja elementu „zaloguj się” i kliknięcie na niego
kierowca.find_element_by_xpath('//*[@id="doc"]/div/div[1]/div[1]/div[2]/div[1]').Kliknij()
 
# lokalizowanie elementu „Telefon, e-mail lub nazwa użytkownika”
nazwa_użytkownika = kierowca.find_element_by_xpath('//*[@id="page-container"]/div/div[1]/form/
fieldset/div[1]/input')
 
# wpisywanie nazwy użytkownika dla Twittera
Nazwa Użytkownika.send_keys('Wprowadź nazwę użytkownika')
 
# lokalizowanie elementu „Hasło”
hasło = kierowca.find_element_by_xpath('//*[@id="page-container"]/div/div[1]/form/
fieldset/div[2]/input')
# wpisywanie hasła do Twittera
hasło.send_keys('Wprowadź hasło')
# zlokalizowanie przycisku „zaloguj się” i kliknięcie go on
kierowca.find_element_by_xpath('//*[@id="page-container"]/div/div[1]/form/div[2]/button')
.Kliknij()

Powyższy kod automatyzuje przeglądarkę, aby zalogować się do serwisów społecznościowych. Przede wszystkim stworzyliśmy obiekt naszej ulubionej przeglądarki. W tym przypadku przyjęliśmy „Chrome” jako przeglądarkę. Aby utworzyć obiekt, przekazaliśmy ścieżkę naszego „chromedrivera” jako argument. Następnie weszliśmy na adres URL facebooka i zalogowaliśmy się na Facebooku, wybierając elementy i podając nazwę użytkownika i hasło.

Następnie otworzyliśmy nową zakładkę i wprowadziliśmy adres URL twittera. Po tym przeszliśmy do nowej zakładki, ponieważ kontrola kodu nadal znajdowała się na pierwszej zakładce, chociaż druga zakładka była otwarta. Następnie logowaliśmy się do Twittera, wybierając elementy i podając nazwę użytkownika i hasło.

Automatyzacja zakupów online

Innym dobrym przykładem automatyzacji przeglądarki mogą być zakupy online. Na przykład chcesz kupić aparat przez Internet, ale ceny są zbyt wysokie. Codziennie sprawdzasz, czy cena mieści się w Twoim zakresie, czy nie. To zadanie można zautomatyzować za pomocą SELEN i możesz uniknąć codziennego sprawdzania ceny. Poniższy kod poinformuje Cię pocztą, czy cena żądanego produktu jest przystępna, czy nie. Jeśli pożądany produkt jest w sprzedaży, program powiadomi Cię e-mailem.

# importowanie webdrivera z modułu selen
z selen importu webdriver
 
# importowanie modułu smtplib do wysyłania poczty
importuj smtplib
 
# zdefiniowanie funkcji poczty do informowania przez e-mail
def poczta():
 
# nawiązanie połączenia z serwerem Gmail z nazwą domeny i numerem portu. 
Różni się to u każdego dostawcy poczty e-mail
połączenie = smtplib.SMTP('smtp.gmail.com',587)
 
# przywitaj się z serwerem
połączenie.ehlo()
 
# rozpoczynam szyfrowane połączenie TLS
połączenie.starttls()
 
# zaloguj się do serwera Gmail przy użyciu swojego głównego adresu i hasła
połączenie.login('adres e-mail nadawcy', 'hasło')
 
# wysłanie do siebie maila informującego o cenie aparatu
połączenie.sendmail('adres e-mail nadawcy', 'adres e-mail odbiorcy',
„Temat: Możesz kupić kamerę”)
 
# kończę połączenie
połączenie.porzucić()
# funkcja poczty kończy się tutaj
 
# uruchamianie google chrome poprzez podanie ścieżki chromedriver jako argumentu
kierowca = webdriver.Chrome('ścieżka do chromedrivera')
 
# minimalizacja chromowanego okna
kierowca.zminimalizować_okno()
 
# otwarcie draz.strona pk
kierowca.otrzymać('https://www.daraz.pk/')
 
# lokalizowanie elementu paska wyszukiwania za pomocą atrybutu id do wyszukiwania kamery
SearchBar = sterownik.find_element_by_id('q')
 
#pisanie kamery w pasku wyszukiwania
searchBar.send_keys('kamera')
 
#lokalizacja elementu przycisku wyszukiwania za pomocą xpath elementu of
wyszukiwanie = kierowca.find_element_by_xpath('//*[@id="topActionHeader"]/div/div[2]/div/div[2]
/form/div/div[2]/button')
 
#kliknięcie przycisku wyszukiwania
Szukaj.Kliknij()
 
# lokalizowanie elementu pożądanego produktu za pomocą atrybutu xpath
produkt = kierowca.find_element_by_xpath('//*[@id="root"]/div/div[3]/div[1]/div/div[1]
/dział[2]/dział[1]/dział/dział/dział[2]/dział[2]/a')
 
# kliknięcie na żądany produkt
produkt.Kliknij()
 
# lokalizowanie elementu ceny za pomocą atrybutu xpath
cena = kierowca.find_element_by_xpath('//*[@id="moduł_product_price_1"]/div/div/span')
 
# wyodrębnianie tekstu z elementu ceny. Daje to cenę produktu, taką jak „Rs. 24 500'
cena = cena.tekst
 
# zamiana ceny na string
Cena = str(cena)
 
# definiowanie pustej tablicy. Będzie to używane do wyodrębniania cyfr z ceny, np. „24500”
forma „Rs”. 24 500'
liczba = []
 
# odczytywanie kolejno wszystkich wpisów ciągu cenowego za pomocą pętli for
za x w cenie:
 
# sprawdzanie czy wpis jest cyfrą czy nie, ponieważ chcemy tylko cyfry w cenie
jeśli x.isdigit():
 
# dodawanie tylko cyfr do listy num
liczba.dołącz(x)
 
# łączenie wszystkich wpisów num list. Teraz cena to ciąg zawierający tylko cyfry
cena = ".dołącz (liczba)
 
# zamiana łańcucha ceny na liczbę całkowitą
cena = wewn(cena)
 
# sprawdzenie czy cena jest przystępna czy nie or
jeśli cena <= 25000:
 
# wywołanie funkcji poczty w celu poinformowania o cenie
Poczta()
 
# zamykanie przeglądarki
kierowca.porzucić()

Powyższy kod otwiera daraz.strona pk i wyszukuje aparat i poinformuje Cię przez e-mail, czy cena jest przystępna. Przede wszystkim importowaliśmy SELEN i SMTPLIB moduły. Następnie zdefiniowaliśmy funkcję 'mail', która po wywołaniu wysyła do Ciebie wiadomość informującą, że cena jest przystępna.

Następnie otworzyliśmy przeglądarkę chrome za pomocą chromedrivera i wyszukaliśmy „daraz.pk. Następnie lokalizujemy pożądany produkt za pomocą elementów i ich atrybutów. Sposób znajdowania i lokalizacji elementów został opisany powyżej. Cena, którą otrzymaliśmy, była ciągiem, więc przeliczyliśmy ten ciąg na liczbę całkowitą, a następnie sprawdziliśmy, czy cena jest przystępna, czy nie. Jeśli cena jest przystępna, wywołaj funkcję „poczta”mail.

Tworzenie zadania Crona

Powyżej dwa skrypty automatyzacji są wymagane do uruchomienia raz dziennie o określonej godzinie. Możemy tym zarządzać za pomocą zadania cron. Zadania dodawane do crontab mogą być uruchamiane wielokrotnie o określonej godzinie. Aby dodać powyższe zadania w crontab, najpierw uruchom następujące polecenie w Terminalu Linux.

[email chroniony]:~$ crontab -e

Powyższe polecenie otworzy plik crontab do edycji. Na końcu pliku wpisz następujące polecenie.

0 8 * * * python /ścieżka/do/pythona/skrypt

Widzimy wpisy przed poleceniem od prawej do lewej.

Więc to polecenie będzie uruchamiane codziennie o 8 rano.

Wniosek

W tym artykule omówiliśmy, jak możesz użyć can SELEN wraz z Pythonem do automatyzacji przeglądarki przy użyciu różnych technik. Możesz zautomatyzować swoją codzienną pracę, wypełniać formularze, pobierać swoje rzeczy i wiele innych rzeczy za jego pomocą. Omówiliśmy tutaj tylko dwa przykłady, ale możesz zautomatyzować każdą rzecz, jaką człowiek może zrobić ręcznie za pomocą przeglądarki.

Gry Najlepsze gry wiersza poleceń dla systemu Linux
Najlepsze gry wiersza poleceń dla systemu Linux
Wiersz poleceń jest nie tylko twoim największym sprzymierzeńcem podczas korzystania z Linuksa - może być również źródłem rozrywki, ponieważ możesz go ...
Gry Najlepsze aplikacje do mapowania gamepada dla systemu Linux
Najlepsze aplikacje do mapowania gamepada dla systemu Linux
Jeśli lubisz grać w gry na Linuksie za pomocą gamepada zamiast typowego systemu wprowadzania klawiatury i myszy, jest kilka przydatnych aplikacji dla ...
Gry Przydatne narzędzia dla graczy Linuksa
Przydatne narzędzia dla graczy Linuksa
Jeśli lubisz grać w gry w systemie Linux, prawdopodobnie używałeś aplikacji i narzędzi, takich jak Wine, Lutris i OBS Studio, aby poprawić wrażenia z ...