Jak znaleźć element według tekstu za pomocą selenu?

How Find Element Text With Selenium



Lokalizowanie i wybieranie elementów ze strony internetowej jest kluczem do web scrapingu za pomocą Selenium. Możesz wybrać elementy za pomocą nazwy tagu, identyfikatora, nazwy klasy, selektora XPath, selektora CSS itp. W Selenium. Możesz także wybrać elementy, które mają określony tekst za pomocą Selenium. Jest to pomocne przy łatwym wybieraniu łączy i przycisków ze strony internetowej. Nawet jeśli zmieni się struktura strony, o ile tekst elementu strony internetowej pozostanie taki sam, Twój selektor powinien działać dobrze. Jest to zaleta wybierania linków i przycisków za pomocą tekstu w Selenium.

W tym artykule pokażę, jak zlokalizować i wybrać elementy ze stron internetowych za pomocą tekstu w Selenium za pomocą biblioteki Selenium python. Więc zacznijmy.







Wymagania wstępne:

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



  1. Dystrybucja Linuksa (najlepiej Ubuntu) zainstalowana na twoim komputerze.
  2. Python 3 zainstalowany na twoim komputerze.
  3. PIP 3 zainstalowany na twoim komputerze.
  4. Pyton wirtualne środowisko pakiet zainstalowany na Twoim komputerze.
  5. Przeglądarki internetowe Mozilla Firefox lub Google Chrome zainstalowane na Twoim komputerze.
  6. Musisz wiedzieć, jak zainstalować sterownik Firefox Gecko lub Chrome Web Driver.

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



Wiele artykułów na inne tematy można znaleźć na LinuxHint.com . Sprawdź je, jeśli potrzebujesz pomocy.





Konfigurowanie katalogu projektu:

Aby wszystko było zorganizowane, utwórz nowy katalog projektów selen-tekst-wybierz/ następująco:

$mkdir -pvselen-tekst-wybierz/kierowcy



Przejdź do selen-tekst-wybierz/ katalog projektu w następujący sposób:

$Płyta CDselen-tekst-wybierz/

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

$virtualenv .venv

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

$źródło.venv/jestem/Aktywuj

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

$ pip3 zainstaluj selen

Pobierz i zainstaluj wszystkie wymagane sterowniki sieciowe w kierowcy/ katalog projektu. W moim artykule wyjaśniłem proces pobierania i instalowania sterowników internetowych Wprowadzenie do Selenium w Pythonie 3 .

Znajdowanie elementów według tekstu:

W tej sekcji pokażę kilka przykładów znajdowania i wybierania elementów strony internetowej według tekstu za pomocą biblioteki Selenium Python.

Zacznę od najprostszego przykładu zaznaczania elementów strony internetowej tekstem, zaznaczania linków ze strony internetowej.

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

Utwórz nowy skrypt Pythona ex01.py i wpisz w nim następujące wiersze kodów.

zselenimportwebdriver
zselen.webdriver.pospolity.Klucze importKlucze
zselen.webdriver.pospolity.za pomocą importZa pomocą
z czas importspać
przeglądarka=sterownik sieciowy.Chrom(wykonywalna_ścieżka='./sterowniki/chromedriver')
przeglądarka.dostwać(„https://www.facebook.com/”)
zapomniałemKontoLink=przeglądarka.znajdź_element(Za pomocą.XPAT, '
//*[text()='Zapomniałeś konta?']'
)
zapomniałemKontoLink.wyślij_klucze(Klucze.WEJŚĆ)

Gdy skończysz, zapisz ex01.py Skrypt Pythona.

Linia 1-4 importuje wszystkie wymagane komponenty do programu w Pythonie.

Linia 6 tworzy Chrome przeglądarka obiekt używając chromedriver binarny z kierowcy/ katalog projektu.

Linia 8 mówi przeglądarce, aby załadować stronę facebook.com.

Linia 10 znajduje link, który ma tekst Zapomniane konto? Korzystanie z selektora XPath. W tym celu użyłem selektora XPath //*[text()=’Zapomniałeś konta?’] .

Selektor XPath zaczyna się od //, co oznacza, że ​​element może znajdować się w dowolnym miejscu na stronie. ten * symbol mówi Selenium, aby wybrać dowolny znacznik ( do lub P lub Zakres, itp.), który pasuje do warunku w nawiasach kwadratowych [] . Tutaj warunek jest taki, że tekst elementu jest równy Zapomniane konto?

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

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

< do href=„http://dummysite.com”>Witaj świecie</ do >

Linia 11 wysyła naciśnij klawisz, aby Zapomniane konto? Połączyć.

Uruchom skrypt Pythona ex01.py za pomocą następującego polecenia:

$ Pythona ex01.py

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

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

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

Tutaj Zaloguj sie przycisk jest Wejście element, który ma wartość atrybut Zaloguj sie . Zobaczmy, jak wybrać ten element tekstem.

Utwórz nowy skrypt Pythona ex02.py i wpisz w nim następujące wiersze kodów.

zselenimportwebdriver
zselen.webdriver.pospolity.Klucze importKlucze
zselen.webdriver.pospolity.za pomocą importZa pomocą
z czas importspać
przeglądarka=sterownik sieciowy.Chrom(wykonywalna_ścieżka='./sterowniki/chromedriver')
przeglądarka.dostwać(„https://www.facebook.com/”)
spać(5)
emailInput=przeglądarka.znajdź_element(Za pomocą.XPAT, '//dane wejściowe[@id='e-mail']')
hasłoInput=przeglądarka.znajdź_element(Za pomocą.XPAT, '//input[@id='pass']')
loginButton=przeglądarka.znajdź_element(Za pomocą.XPAT, '//*[@value='Zaloguj się']')
emailInput.wyślij_klucze(' [e-mail chroniony] ')
spać(5)
hasłoInput.wyślij_klucze(„tajna przepustka”)
spać(5)
przycisk logowania.wyślij_klucze(Klucze.WEJŚĆ)

Gdy skończysz, zapisz ex02.py Skrypt Pythona.

Wiersz 1-4 importuje wszystkie wymagane komponenty.

Linia 6 tworzy Chrome przeglądarka obiekt używając chromedriver binarny z kierowcy/ katalog projektu.

Linia 8 mówi przeglądarce, aby załadować stronę 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 obserwować, jak wszystko działa.

Linia 11 wyszukuje pole tekstowe wprowadzania wiadomości e-mail i przechowuje odwołanie do elementu w emailInput zmienny.

Linia 12 wyszukuje pole tekstowe wprowadzania wiadomości e-mail i przechowuje odwołanie do elementu w emailInput zmienny.

Linia 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 //*[@value=’Zaloguj się’] .

Selektor XPath zaczyna się od // . Oznacza to, że element może znajdować się w dowolnym miejscu na stronie. ten * symbol mówi Selenium, aby wybrać dowolny znacznik ( Wejście lub P lub Zakres, itp.), który pasuje do warunku w nawiasach kwadratowych [] . Tutaj warunkiem jest atrybut elementu wartość jest równe Zaloguj sie .

Linia 15 wysyła dane wejściowe[e-mail chroniony]do pola tekstowego wprowadzania wiadomości e-mail, a wiersz 16 opóźnia następną operację.

Linia 18 wysyła tajne hasło wejściowe do pola tekstowego wprowadzania hasła, a linia 19 opóźnia następną operację.

Linia 21 wysyła naciśnij klawisz do przycisku logowania.

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

$ python3 ex02.py

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

Następnie strona przechodzi do następnej strony.

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

We wcześniejszej części pokazałem, jak wyszukiwać elementy po określonym tekście. W tej sekcji pokażę, jak znaleźć elementy ze stron internetowych za pomocą częściowego tekstu.

W przykładzie ex01.py , szukałem elementu link, który ma tekst Zapomniane konto? . Możesz przeszukać ten sam element linku, używając częściowego tekstu, takiego jak Zapomniane konto . Aby to zrobić, możesz użyć zawiera() Funkcja XPath, jak pokazano w wierszu 10 z ex03.py . Pozostałe kody są takie same jak w ex01.py . Wyniki będą takie same.

W linii 10 z ex03.py , użyto warunku wyboru zawiera(źródło, tekst) Funkcja XPath. Ta funkcja przyjmuje 2 argumenty, źródło, oraz tekst .

ten zawiera() funkcja sprawdza, czy tekst podane 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 ( @nazwa_atrybutu ).

w ex03.py , tekst elementu jest sprawdzany.

Inną przydatną funkcją XPath do wyszukiwania elementów ze strony internetowej przy użyciu częściowego tekstu jest zaczyna się od(źródło, tekst) . Ta funkcja ma te same argumenty co zawiera() funkcja i jest używany w ten sam sposób. Jedyna różnica polega na tym, ż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 wierszu 10 z ex04.py . Wynik jest taki sam jak w ex02 oraz ex03.py .

Ja też przepisałem ex02.py aby szukał elementu wejściowego, dla którego wartość atrybut zaczyna się od Dziennik, jak widać w wierszu 13 z 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 za pomocą biblioteki Selenium Python. Teraz powinieneś być w stanie znaleźć elementy ze stron internetowych według określonego tekstu lub części tekstu za pomocą biblioteki Selenium Python.