Selen służy do automatyzacji nudnych zadań; automatyzuje przeglądarki. Od nawigacji w Internecie do automatycznego logowania na konta po tworzenie botów dla różnych zadań można osiągnąć za pomocą selenu.
Po pierwsze, zainstalujmy zależności:
PIP Instaluj selen
instaluj manager WebDriver-Manager
Nawigacja w sieci
Importujemy zależności:
od selenu importu Webdriver
z WebDriver_Manager.Chrome Import ChromedriverManager
Następnie inicjujemy Webdriver:
Driver = WebDriver.Chrome (ChromedriverManager ().zainstalować())
Po pierwsze, spróbujmy poruszać się po stronie internetowej za pomocą Metoda get (). Metoda get () otworzy stronę internetową lub adres URL, który został wprowadzony; Należy pamiętać, że pełny link musi być podany, aby to działało.
kierowca.Get ("https: // duckduckgo.com/”)
Załóżmy, że chciałeś zmaksymalizować okno za pomocą maksymalizuj_window () Metoda i nie ma Pythona przebiegającego przez resztę kodu; Następnie użyjesz Impliccile_Wait () metoda zatrzymania się.
kierowca.maksymalizuj_window ()
kierowca.Impliccile_Wait (4)
Jeśli chcesz informacji na stronie, możesz użyć metody tytułu, aby uzyskać nazwę lub tytuł Witryny, metodę bieżącego_url, aby uzyskać adres URL, oraz page_source, aby uzyskać kod HTML strony.
Drukuj (sterownik.tytuł)
Drukuj (sterownik.current_url)
Drukuj (sterownik.źródło strony)
Aby wprowadzić kawałek tekstu do paska wyszukiwania, musimy najpierw spróbować zidentyfikować pasek wyszukiwania za pomocą „sprawdzaćPrzycisk (kliknij prawym przyciskiem myszy).
Dla DuckDuckGo.com, jest dostępny identyfikator, ale możesz również uzyskać inne atrybuty. Następną używaną metodą jest metoda Find_Element_By_Id (). Celem tej metody jest wybranie elementu niepokoju.
Search_Bar = sterownik.find_element_by_id („Search_form_input_homepage”)
Możesz jednak zastąpić to dowolnym z innych atrybutów. Na przykład, jeśli masz dostępną nazwę, użyj find_elements_by_name () metoda. Nie musieliśmy używać identyfikatora; moglibyśmy użyć czegoś innego, jak chcieliśmy. Na przykład moglibyśmy użyć nazwy w następujący sposób:
Search_Bar = sterownik.Find_element_by_name („Q”)
Ponieważ zlokalizowaliśmy pasek wyszukiwania, możemy teraz wprowadzić kawałek tekstu za pomocą send_keys () metoda.
Search_bar.send_keys („selenumhq”)
Teoretycznie to, co zrobilibyśmy, to kliknięcie następnego przycisku. Więc co robimy? Tak, zgadłeś! MODINIU MODINE I ID lub inny atrybut następnego przycisku. Następnie używamy metody kliknij (), aby kliknąć przycisk, który wybraliśmy za pomocą atrybutu (takiego jak id).
przycisk = sterownik.find_element_by_id („Search_button_homepage”)
przycisk.Kliknij()
W tym momencie otrzymujesz listę stron internetowych; To bardzo przypomina wpisanie seleniumhq w pasku wyszukiwania DuckDuckGo.Witryna COM i naciśnięcie następnego przycisku. Teraz spróbujmy kliknąć na pierwszą stronę, którą otrzymujemy. Tutaj użyję XPath, ale możesz użyć dowolnego z atrybutów. Należy pamiętać, że podczas korzystania z XPath znaki cytatowe są w środku i na zewnątrz są podwójne („//*[@id = 'r1-0']/div/h2/a [1]”).
strona = sterownik.find_element_by_xpath ("//*[@id = 'r1-0']/div/h2/a [1]")
strona.Kliknij()
Logowanie na konto e -mail
Załóżmy teraz, że chcemy zalogować się na konto e -mail. Jak zawsze zaczęliśmy importować niezbędne moduły i inicjować je, tak jak to zrobiliśmy, aby poruszać się po stronie internetowej. Tutaj również zaimportujemy czas.
od selenu importu Webdriver
z WebDriver_Manager.Chrome Import ChromedriverManager
czas importu
Driver = WebDriver.Chrome (ChromedriverManager ().zainstalować())
kierowca.Get ("https: // www.Gmail.com/”)
kierowca.maksymalizuj_window ()
kierowca.Impliccile_Wait (4)
użytkownik = sterownik.find_element_by_xpath ("//*[@id = 'identifierId']")
użytkownik.send_keys ("[email protected] ”)
Dalej = sterownik.find_element_by_xpath ("//*[@id = 'identifierNext']/div/button/div [2]")
Następny.Kliknij()
Następnie będziemy używać czas.spać() Metoda zapobiegania błędom synchronizacji (czasami załadowanie strony zajmuje więcej czasu, a podczas ładowania reszty skryptu jest wykonywana i zgłoszony błąd). Próbując zapobiec błędom synchronizacji, damy czas na załadowanie wszystkiego.
czas.sen (3)
hasło = sterownik.find_element_by_xpath ("//*[@id = 'hasło']/div [1]/div/div [1]/input")
hasło.send_keys ("hasło1.")
Next2 = sterownik.find_element_by_xpath ("//*[@id = 'PasswordNext']/div/button/div [2]")
Next2.Kliknij()
Wysyłanie e -maili za pomocą selenu
Aby wysłać e -maile, potrzebujemy dwóch części: jak zalogować się do Gmaila z poprzedniej sekcji i jak wysyłać e -maile z tej sekcji. Wysłanie wiadomości e -mail jest tak proste, jak poruszanie się po Internecie lub nawet logowanie do Gmaila. Po raz kolejny wybieramy metodę Find_Element_By_XPath () lub taką podobną, taką jak Find_Element_by_Id () lub kolejna, aby znaleźć każdy element wiadomości, który ma zostać wysłany - przycisk komponsu, pasek wejściowy, podmiot wejściowy, pasek wejściowy, nadwozia i przycisk Wyślij. Musimy je zlokalizować, wypełnić tekstem w razie potrzeby i kliknąć przyciski. Wystarczająco proste. Więc spróbujmy:
Najpierw znajdźmy przycisk komponsu za pomocą XPath, a następnie kliknij go:
czas.sen (1)
compose_button = sterownik.find_element_by_xpath ("//*[@id = ': 2p']/div/div")
Compose_Button.Kliknij()
Następnie dodajmy adres docelowy na pasku wejściowego adresu docelowego:
czas.sen (2)
to_input_bar = sterownik.find_element_by_id (': 8c')
to_input_bar.send_keys ("[email protected] ”)
Teraz dodajemy temat, ciało i klikamy przycisk Wyślij:
Temat = sterownik.find_element_by_id (': 7U')
temat.send_keys („testowy e -mail”)
Body = kierowca.find_element_by_xpath ("//*[@id = ': 8z']")
ciało.send_keys („To jest zautomatyzowana wiadomość wysyłana za pomocą selenium.")
send_button = sterownik.find_element_by_xpath ("//*[@id = ': 7k']")
send_button.Kliknij()
Ok, więc tworzenie prostego programu do logowania się i wysyłania maili jest teraz zbyt łatwe? Nie musimy się na tym zatrzymać; Możemy tworzyć wszelkiego rodzaju boty.
Działania myszy
Następną rzeczą do nauczenia się jest radzenie sobie z działaniami myszy - od unoszenia się po przeciąganie i upuszczanie plików.
Musimy najpierw określić zakładki; W takim przypadku określę trzy zakładki - kartę domową, kartę elektroniki i kartę telefonu komórkowego (telefon komórkowy jest zagnieżdżony w elektronice). Ok, więc na ten przykład wybrałem eBay.ca. Na ebayu.CA, istnieje wiele zakładek - jedna dla domu i jedna dla elektroniki. Zazwyczaj zaczynamy na zakładce domowej. Tutaj, powiedzmy, że chciałbym poruszać się po zakładce Electronics, a następnie telefonu komórkowego i akcesoriów w nim i kliknij. Moglibyśmy użyć działań myszy, aby przeprowadzić następujące.
Zaczynamy od zaimportowania niezbędnego i otwarcia eBayu.ca.
Od selenu importu Webdriver
z selenu.Webdriver importuje działania akcji
z WebDriver_Manager.Chrome Import ChromedriverManager
czas importu
Driver = WebDriver.Chrome (ChromedriverManager ().zainstalować())
kierowca.Get ("https: // www.eBay.CA/”)
Następnie musimy dodać elementy, o które martwimy się. W tym przypadku mam trzy czerwone pola na poprzednim zdjęciu.
Strona główna = kierowca.find_element_by_xpath ("//*[@id = 'mainContent']/div [1]/ul/li [1]/span")
elektronika = sterownik.find_element_by_xpath ("//*[@id = 'mainContent']/div [1]/ul/li [5]/a")
cell_phone = sterownik.find_element_by_xpath ("//*[@id = 'mainContent']/div [1]/ul/li [5]/div [2]/div [1]/Nav [1]/ul/li [1]/a ")
Następnie zainicjujemy Działania i użyj Move_to_element () Metoda przechodzenia z domu do elektroniki i telefonów komórkowych. Raz na karcie telefonu komórkowego i akcesoriów klikamy go. Aby to wszystko działało, musimy na końcu dodać metodę Perform (), albo nic się nie wydarzy.
Działania = Działania (sterownik)
Next_step = Actions.Move_to_element (dom).Move_to_element (elektronika)
Następny krok.Move_to_element (cell_phone).Kliknij()
Następny krok.dokonywać()
Możesz jednak wykonywać różne działania z mysią - od kliknięcia prawym przyciskiem myszy po przeciąganie i krople. Zdobądźmy przykład, w którym możesz kliknąć prawym przyciskiem myszy. Aby kliknąć prawym przyciskiem myszy, potrzebujesz metody context_click (); Przekaż w nim to, co chcesz kliknąć. W takim przypadku chcemy najpierw kliknąć przycisk prawym przyciskiem myszy, więc mówimy sterownik.kontekst_click (przycisk) - kliknij przycisk prawym przyciskiem myszy. Następnie, gdy kliknięcie prawym przyciskiem myszy pokazuje nam menu wyboru z opcjami, prosimy o kliknięcie jednej z wyświetlanych opcji - kliknij (kopiuj), która kliknie kartę kopiuj.
od selenu importu Webdriver
z selenu.Webdriver importuje działania akcji
z WebDriver_Manager.Chrome Import ChromedriverManager
Driver = WebDriver.Chrome (ChromedriverManager ().zainstalować())
kierowca.Get ("https: // swisnl.github.IO/JQuery-Contextmenu/Demo/Menu-Title.html ”)
przycisk = sterownik.find_element_by_xpath ("/html/body/div/section/div/div/div/p/span [1]")
kopia = sterownik.find_element_by_xpath ("/html/body/ul [1]/li [3]")
Działania = Działania (sterownik)
działania.kontekst_click (przycisk).kliknij (kopia)
działania.dokonywać()
Możesz zrobić tak wiele rzeczy z Selenium, ale przyjrzymy się również przeciągnięciu i upuść. Istnieją dwa sposoby przeciągania i upuszczenia przedmiotu do celu docelowego. Jeden używa metody drag_and_drop (), a drugi stosuje bardziej skomplikowaną technikę:
od selenu importu Webdriver
z selenu.Webdriver importuje działania akcji
z WebDriver_Manager.Chrome Import ChromedriverManager
czas importu
Driver = WebDriver.Chrome (ChromedriverManager ().zainstalować())
kierowca.Get ("http: // www.DhtmlGoodies.com/scripts/drag-drop-nodes/drag-drop-nodes-demo3.html ”)
kierowca.Impliccile_Wait (1)
kierowca.maksymalizuj_window ()
# Wybierz obraz źródłowy na stronie, aby przeciągnąć
Źródło = sterownik.find_element_by_id („Node2”)
# Wybierz cel, w którym chcesz upuścić
Target = sterownik.find_element_by_xpath ("//*[@id = 'box1']")
czas.sen (5)
# Zainicjuj działanie
Action_chains = ActionChains (sterownik)
# Przesuń źródło do celu
Action = Action_chains.Click_and_hold (źródło) \
.Move_to_element (cel) \
.Wydanie (cel) \
.kliknij (cel) \
.dokonywać()
Selen to bardzo potężne narzędzie do robienia bardzo wielu rzeczy. W tym samouczku omówiliśmy kilka rzeczy, które może zrobić Selen; Jednak po zapoznaniu się z nim możesz stworzyć wszelkiego rodzaju boty, aby zautomatyzować przeglądarkę.
Szczęśliwe kodowanie!