Instalacja selenu
Przed użyciem SELEN moduł w pythonie, musimy go zainstalować. Uruchom następujące polecenie w terminalu, aby go zainstalować.
pip zainstaluj selenLUB
pip3 zainstaluj selenTo 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>pythonPyton 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.
- Przede wszystkim naciśnij F12 Strona źródłowa otworzy się po prawej stronie okna, jak pokazano poniżej
- Teraz naciśnij 'Ctrl+Shift+C' lub kliknij symbol znajdujący się w lewym górnym rogu strony źródłowej.
- Przesuń strzałkę na 'Email lub telefon' pole i kliknij. Ten element zostanie wybrany, a kod źródłowy tego elementu zostanie podświetlony na stronie źródłowej, jak pokazano poniżej. Widać, że dla wybranego elementu mamy następujące atrybuty
- nazwa= „e-mail”
- class= „wpisz tekst login_form_input_box”
- id= „e-mail”
Możemy zlokalizować 'Email lub telefon' element przy użyciu dowolnego z powyższych atrybutów.
- Jeżeli nie posiadamy żadnego z wyżej wymienionych atrybutów to możemy również wybrać element używając 'XPath'. Aby skopiować XPath, kliknij prawym przyciskiem myszy podświetlony kod źródłowy na stronie źródłowej. Następnie przejdź do 'Kopiuj > Kopiuj XPath'.
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.
- find_element_by_class_name(name)
- find_element_by_tag_name(nazwa)
- find_element_by_link_text(tekst)
- find_element_by_css_selector(selektor)
- find_element_by_name(name)
- find_element_by_id(id)
- find_element_by_xpath(XPath)
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 KluczeNa 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 webdriverz 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 selenz 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 selenz 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 -ePowyższe polecenie otworzy plik crontab do edycji. Na końcu pliku wpisz następujące polecenie.
0 8 * * * python /ścieżka/do/pythona/skryptWidzimy wpisy przed poleceniem od prawej do lewej.
- Pierwsza gwiazdka od prawej oznacza, że to polecenie będzie uruchamiane codziennie.
- Druga gwiazdka oznacza, że to polecenie będzie uruchamiane co miesiąc
- Trzecia gwiazdka oznacza, że to polecenie będzie uruchamiane każdego dnia miesiąca
- Czwarty wpis to „8”, co oznacza, że ten skrypt będzie uruchamiany o ósmej godzinie dnia
- Piąty wpis, który jest „0”, oznacza, że to polecenie zostanie uruchomione w 0. minucie.
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.