Jak znaleźć element po selenium

Jak znaleźć element po selenium
Lokalizacja i wybieranie elementów ze strony internetowej jest kluczem do skrobania internetowego za pomocą selenu. Możesz wybrać elementy za pomocą nazwy znacznika, identyfikatora, nazwy klasy, selektora xpath, selektora CSS itp. w selen. Możesz także wybrać elementy, które mają określony tekst z selenem. Jest to pomocne w łatwym wyborze linków i przycisków ze strony internetowej. Nawet jeśli zmienia się struktura strony, o ile tekst elementu strony internetowej pozostaje taki sam, selektor powinien działać dobrze. Jest to zaleta wyboru linków i przycisków za pomocą tekstu w selenium.

W tym artykule pokażę Ci, jak zlokalizować i wybrać elementy ze stron internetowych za pomocą tekstu w selenium z biblioteką selenium Python. Więc zacznijmy.

Wymagania wstępne:

Aby wypróbować polecenia i przykłady tego artykułu, musisz mieć:

  1. Dystrybucja Linuksa (najlepiej Ubuntu) zainstalowana na komputerze.
  2. Python 3 zainstalowany na komputerze.
  3. PIP 3 zainstalowany na komputerze.
  4. Pyton Virtualenv Pakiet zainstalowany na komputerze.
  5. Przeglądarki internetowe Mozilla Firefox lub Google Chrome zainstalowane na komputerze.
  6. Muszę wiedzieć, jak zainstalować sterownik Gecko Firefox lub Chrome Web Sterownik.

Aby spełnić wymagania 4, 5 i 6, przeczytaj mój artykuł Wprowadzenie do selenu w Pythonie 3.

Można znaleźć wiele artykułów na inne tematy na Linuxhint.com. Pamiętaj, aby je sprawdzić, jeśli potrzebujesz pomocy.

Konfiguracja katalogu projektu:

Aby wszystko się zorganizowano, stwórz nowy katalog projektowy selen-text-select/ następująco:

$ mkdir -pv selen-text-select/sterowniki

Przejść do selen-text-select/ Katalog projektu w następujący sposób:

$ cd selen-text-select/

Utwórz wirtualne środowisko Python w katalogu projektu w następujący sposób:

$ Virtualenv .Venv

Aktywuj środowisko wirtualne w następujący sposób:

$ źródło .venv/bin/aktywuj

Zainstaluj bibliotekę Selenium Python za pomocą PIP3 w następujący sposób:

$ PIP3 instaluj selen

Pobierz i zainstaluj cały wymagany sterownik internetowy w kierowcy/ Katalog projektu. Wyjaśniłem proces pobierania i instalowania sterowników internetowych w moim artykule Wprowadzenie do selenu w Pythonie 3.

Znalezienie elementów według tekstu:

W tej sekcji pokażę ci przykłady znalezienia i wyboru elementów strony internetowej według tekstu z biblioteką selenium Python.

Zacznę od najprostszego przykładu wyboru elementów strony internetowej według tekstu, wybierania linków ze strony internetowej.

Na stronie logowania na Facebooku.com, mamy link Zapomniane konto? Jak widać na zrzucie ekranu poniżej. Wybierzmy ten link z Selenium.

Utwórz nowy skrypt Python Ex01.py i wpisz w poniższych wierszach kodów.

od selenu importu Webdriver
z selenu.Webdriver.wspólny.Klucze importują klucze
z selenu.Webdriver.wspólny.przez import przez
Od czasu importuj sen
Browser = WebDriver.Chrome (Exceutable_path = "./sterowniki/chromedriver ")
przeglądarka.Get ("https: // www.Facebook.com/”)
ForgotAccountLink = przeglądarka.Find_element (przez.Xpath, „Post-66569 -_hlk47727696”>
//*[text () = 'zapomniane konto?'] ")
ForgotAccountLink.send_keys (klucze.WCHODZIĆ)

Po zakończeniu zapisz Ex01.py Skrypt Pythona.

Linia 1-4 importuje wszystkie wymagane komponenty do programu Python.

Linia 6 tworzy chrom przeglądarka obiekt za pomocą chromedriver binarny z kierowcy/ Katalog projektu.

Linia 8 informuje przeglądarkę, aby załadował stronę internetową Facebook.com.

Wiersz 10 znajduje link, który ma tekst Zapomniane konto? Za pomocą selektora XPath. W tym celu użyłem selektora XPath //*[text () = 'zapomniane konto?'].

Selektor XPath zaczyna się od //, co oznacza, że ​​element może znajdować się w dowolnym miejscu na stronie. * Symbol mówi Selenium, aby wybrał dowolny znacznik (A Lub P Lub Zakres, itp.), który pasuje do stanu wewnątrz nawiasów kwadratowych [] []. Warunkiem jest to, że tekst elementu jest równy Zapomniane konto?

tekst() Funkcja XPath służy do uzyskania tekstu elementu.

Na przykład, tekst() zwroty Witaj świecie Jeśli wybierze następujący element HTML.

Witaj świecie

Wiersz 11 wysyła klawisz naciśnij do Zapomniane konto? Połączyć.

Uruchom skrypt Python Ex01.py Z następującym poleceniem:

$ Python Ex01.py

Jak widać, przeglądarka internetowa znajduje, wybiera i naciska Klucz na Zapomniane konto? Połączyć.

Zapomniane konto? Link przenosi przeglądarkę na następną stronę.

W ten sam sposób możesz łatwo wyszukać elementy, które mają pożądaną wartość atrybutu.

Tutaj Zaloguj sie przycisk to wejście element, który ma wartość atrybut Zaloguj sie. Zobaczmy, jak wybrać ten element według tekstu.

Utwórz nowy skrypt Python Ex02.py i wpisz w poniższych wierszach kodów.

od selenu importu Webdriver
z selenu.Webdriver.wspólny.Klucze importują klucze
z selenu.Webdriver.wspólny.przez import przez
Od czasu importuj sen
Browser = WebDriver.Chrome (Exceutable_path = "./sterowniki/chromedriver ")
przeglądarka.Get ("https: // www.Facebook.com/”)
sen (5)
e -mailinput = przeglądarka.Find_element (przez.Xpath, "// input [@id = 'e -mail']")
PasswordInput = przeglądarka.Find_element (przez.Xpath, "// input [@id = 'pas']")
loginbutton = przeglądarka.Find_element (przez.Xpath, "//*[@value = 'log in']")
e -mail.send_keys („manekin@e -mail.com ')
sen (5)
PasswordInput.send_keys („Secret-Pass”)
sen (5)
Loginbutton.send_keys (klucze.WCHODZIĆ)

Po zakończeniu zapisz Ex02.py Skrypt Pythona.

Linia 1-4 importuje wszystkie wymagane komponenty.

Linia 6 tworzy chrom przeglądarka obiekt za pomocą chromedriver binarny z kierowcy/ Katalog projektu.

Linia 8 informuje przeglądarkę, aby załadował stronę internetową Facebook.com.

Wszystko dzieje się tak szybko po uruchomieniu skryptu. Więc użyłem spać() funkcjonować wiele razy w Ex02.py do opóźniania poleceń przeglądarki. W ten sposób możesz zauważyć, jak wszystko działa.

Wiersz 11 znajduje pole tekstowe wejściowe e -mail i przechowuje odniesienie elementu w e -mail zmienny.

Wiersz 12 znajduje pudełko tekstowe wejściowe e -mail i przechowuje odniesienie elementu w e -mail zmienny.

Wiersz 13 znajduje element wejściowy, który ma atrybut wartość z Zaloguj sie za pomocą selektora XPath. W tym celu użyłem selektora XPath //*[@wartość = „Zaloguj się”].

Selektor XPath zaczyna się od //. Oznacza to, że element może znajdować się w dowolnym miejscu na stronie. * Symbol mówi Selenium, aby wybrał dowolny znacznik (wejście Lub P Lub Zakres, itp.), który pasuje do stanu wewnątrz nawiasów kwadratowych [] []. Warunkiem jest atrybut elementu wartość jest równe Zaloguj sie.

Wiersz 15 wysyła manekin wejściowy@e -mail.com do pola tekstowego wejściowego e -mail, a linia 16 opóźnia następną operację.

Wiersz 18 wysyła tajny pas do wejścia do pola tekstowego wprowadzania hasła, a wiersz 19 opóźnia następną operację.

Wiersz 21 wysyła Klucz naciśnij do przycisku logowania.

Uruchom Ex02.py Skrypt Pythona z następującym poleceniem:

$ Python3 Ex02.py

Jak widać, pola tekstowe e -mail i hasła są wypełnione naszymi wartościami manekinowymi i Zaloguj sie Przycisk jest naciśnięty.

Następnie strona nawiguje do następnej strony.

Znalezienie elementów według częściowego tekstu:

We wcześniejszej sekcji pokazałem, jak znaleźć elementy według określonego tekstu. W tej sekcji pokażę Ci, jak znaleźć elementy ze stron internetowych za pomocą częściowego tekstu.

W przykładzie, Ex01.py, Szukałem elementu łącza, który ma tekst Zapomniane konto?. Możesz wyszukać ten sam element łącza za pomocą częściowego tekstu, takiego jak Zapomniany ACC. Aby to zrobić, możesz użyć zawiera() Funkcja xpath, jak pokazano w wierszu 10 Ex03.py. Reszta kodów jest taka sama jak w Ex01.py. Wyniki będą takie same.

W linii 10 Ex03.py, Warunki wyboru zastosowano zawiera (źródło, tekst) Funkcja XPath. Ta funkcja przyjmuje 2 argumenty, źródło, I tekst.

zawiera() funkcja sprawdza, czy tekst podany w drugim argumencie częściowo pasuje do źródło wartość w pierwszym argumencie.

Źródłem może być tekst elementu (tekst()) lub wartość atrybutu elementu (@Attr_Name).

W Ex03.py, Tekst elementu jest sprawdzany.

Kolejna przydatna funkcja XPath do znalezienia elementów ze strony internetowej za pomocą częściowego tekstu jest zaczyna się z (źródło, tekst). Ta funkcja ma takie same argumenty jak zawiera() funkcja i jest używana w ten sam sposób. Jedyną różnicą jest to, że zaczynać z() Funkcja sprawdza, czy drugi argument tekst jest początkowym ciągiem pierwszego argumentu źródło.

Przepisałem przykład Ex03.py Aby wyszukać element, od którego zaczyna się tekst Zapomniany, Jak widać w linii 10 Ex04.py. Wynik jest taki sam jak w Ex02 I Ex03.py.

Przepisałem też Ex02.py tak, aby wyszukiwał element wejściowy, dla którego wartość Atrybut zaczyna się od Dziennik, Jak widać w linii 13 Ex05.py. Wynik jest taki sam jak w Ex02.py.

Wniosek:

W tym artykule pokazałem, jak znaleźć i wybrać elementy ze stron internetowych według tekstu z biblioteką selenium Python. Teraz powinieneś być w stanie znaleźć elementy ze stron internetowych według określonego tekstu lub częściowego tekstu z biblioteką Selenium Python.