Kuidas leida elementi teksti abil seleeniga

How Find Element Text With Selenium



Veebilehe elementide leidmine ja valimine on seleeni abil veebis kraapimise võti. Saate valida elemente, kasutades Seleniumis märgendi nime, ID -d, klassi nime, XPath -valijat, CSS -i valijat jne. Seleeni abil saate valida ka elemente, millel on konkreetne tekst. See on abiks veebilehe linkide ja nuppude hõlpsaks valimiseks. Isegi kui lehe struktuur muutub, peaks teie valija töötama seni, kuni veebilehe elemendi tekst jääb samaks. Selle eeliseks on linkide ja nuppude valimine Seleniumi teksti abil.

Selles artiklis näitan teile, kuidas leida ja valida veebilehtedelt elemente, kasutades Selenium teksti koos Selenium pythoni koguga. Niisiis, alustame.







Eeltingimused:

Selle artikli käskude ja näidete proovimiseks peab teil olema:



  1. Teie arvutisse installitud Linuxi distributsioon (eelistatavalt Ubuntu).
  2. Python 3 on teie arvutisse installitud.
  3. PIP 3 on teie arvutisse installitud.
  4. Python virtualenv teie arvutisse installitud pakett.
  5. Arvutisse installitud veebibrauserid Mozilla Firefox või Google Chrome.
  6. Peab teadma, kuidas Firefox Gecko draiverit või Chrome'i veebidraiverit installida.

Nõuete 4, 5 ja 6 täitmiseks lugege minu artiklit Sissejuhatus seleeni Python 3 -s .



Teiste teemade kohta leiate palju artikleid LinuxHint.com . Kontrollige neid kindlasti, kui vajate abi.





Projekti kataloogi seadistamine:

Et kõik oleks korras, looge uus projektikataloog selenium-text-select/ järgnevalt:

$mkdir -lkselenium-text-select/autojuhid



Liikuge lehele selenium-text-select/ projekti kataloog järgmiselt:

$CDselenium-text-select/

Looge Pythoni virtuaalne keskkond projekti kataloogis järgmiselt.

$virtualenv .venv

Aktiveerige virtuaalne keskkond järgmiselt.

$allikas.venv/olen/aktiveerida

Installige Selenium Pythoni teek PIP3 abil järgmiselt.

$ pip3 install seleen

Laadige alla ja installige kõik vajalikud veebidraiverid autojuhid/ projekti kataloog. Olen oma artiklis selgitanud veebidraiverite allalaadimise ja installimise protsessi Sissejuhatus seleeni Python 3 -s .

Elementide leidmine teksti järgi:

Selles jaotises näitan teile mõningaid näiteid veebilehe elementide leidmise ja valimise kohta teksti järgi Selenium Pythoni raamatukogu abil.

Alustan lihtsaima näitega veebilehe elementide valimisest teksti järgi, veebilehelt linkide valimisest.

Facebooki sisselogimislehel on meil link Unustasite konto? Nagu näete alloleval ekraanipildil. Valime selle lingi koos seleeniga.

Looge uus Pythoni skript ex01.py ja sisestage sellesse järgmised koodiridad.

alatesseleenimportveebidraiver
alatesseleen.veebidraiver.levinud.võtmed importVõtmed
alatesseleen.veebidraiver.levinud.kõrval importKõrval
alates aega importmagama
brauser=veebidraiver.Chrome(käivitatav_tee='./drivers/chromedriver')
brauser.saada('https://www.facebook.com/')
forgotAccountLink=brauser.leid_element(Kõrval.XPATH, '
//*[text () = 'Unustasite konto?'] '
)
forgotAccountLink.send_keys(Võtmed.SISENEMA)

Kui olete lõpetanud, salvestage ex01.py Pythoni skript.

Rida 1-4 impordib kõik vajalikud komponendid Pythoni programmi.

6. rida loob Chrome'i brauser objekti kasutades kroomitud draiver binaarne alates autojuhid/ projekti kataloog.

Rida 8 käsib brauseril veebisaidi facebook.com laadida.

Rida 10 leiab lingi, millel on tekst Unustasite konto? XPathi valija kasutamine. Selleks olen kasutanud XPathi valijat //*[text () = ’Unustasite konto?’] .

XPathi valija algab tähega //, mis tähendab, et element võib olla lehel ükskõik kus. The * sümbol käsib seleenil valida mis tahes sildi ( et või lk või ulatus, jne), mis vastab nurksulgudes olevale tingimusele [] . Siin on tingimus, et elemendi tekst on võrdne Unustasite konto?

The tekst () Funktsiooni XPath kasutatakse elemendi teksti saamiseks.

Näiteks, tekst () naaseb Tere, Maailm kui see valib järgmise HTML -elemendi.

< et href='http://dummysite.com'>Tere, Maailm</ et >

Rida 11 saadab vajutage klahvi Unustasite konto? Link.

Käivitage Pythoni skript ex01.py järgmise käsuga:

$ python ex01.py

Nagu näete, otsib, valib ja vajutab veebibrauser ikooni klahvi Unustasite konto? Link.

The Unustasite konto? Link viib brauseri järgmisele lehele.

Samamoodi saate hõlpsalt otsida elemente, millel on soovitud atribuudi väärtus.

Siin, Logi sisse nupp on sisend element, millel on väärtus atribuut Logi sisse . Vaatame, kuidas seda elementi teksti järgi valida.

Looge uus Pythoni skript ex02.py ja sisestage sellesse järgmised koodiridad.

alatesseleenimportveebidraiver
alatesseleen.veebidraiver.levinud.võtmed importVõtmed
alatesseleen.veebidraiver.levinud.kõrval importKõrval
alates aega importmagama
brauser=veebidraiver.Chrome(käivitatav_tee='./drivers/chromedriver')
brauser.saada('https://www.facebook.com/')
magama(5)
emailInput=brauser.leid_element(Kõrval.XPATH, '// sisend [@id =' email ']')
passwordInput=brauser.leid_element(Kõrval.XPATH, '// sisend [@id =' pass ']')
loginButton=brauser.leid_element(Kõrval.XPATH, '//*[@value =' Logi sisse ']')
emailInput.send_keys('[email protected]')
magama(5)
passwordInput.send_keys('salajane pass')
magama(5)
loginButton.send_keys(Võtmed.SISENEMA)

Kui olete lõpetanud, salvestage ex02.py Pythoni skript.

Rida 1-4 impordib kõik nõutavad komponendid.

6. rida loob Chrome'i brauser objekti kasutades kroomitud draiver binaarne alates autojuhid/ projekti kataloog.

Rida 8 käsib brauseril veebisaidi facebook.com laadida.

Kõik juhtub nii kiiresti, kui käivitate skripti. Niisiis, olen kasutanud magama () funktsioneerida mitu korda ex02.py brauseri käskude viivitamiseks. Nii saate jälgida, kuidas kõik töötab.

Rida 11 leiab e -posti sisendteksti ja salvestab elemendi viite kausta emailInput muutuja.

Rida 12 leiab e -kirja sisestamise tekstikasti ja salvestab elemendi viite kausta emailInput muutuja.

Rida 13 leiab sisend -elemendi, millel on atribuut väärtus kohta Logi sisse kasutades XPathi valijat. Selleks olen kasutanud XPathi valijat //*[@value = ’Logi sisse]] .

XPathi valija algab tähega // . See tähendab, et element võib lehel olla ükskõik kus. The * sümbol käsib seleenil valida mis tahes sildi ( sisend või lk või ulatus, jne), mis vastab nurksulgudes olevale tingimusele [] . Siin on tingimus elemendi atribuut väärtus on võrdne Logi sisse .

Rida 15 saadab sisendi[e -post kaitstud]e -kirja sisestamise tekstikasti ja rida 16 lükkab järgmise toimingu edasi.

Rida 18 saadab sisestatud salajase pääsme parooli sisestamise tekstikasti ja rida 19 lükkab edasi järgmise toimingu.

Rida 21 saadab vajutage sisselogimisnuppu.

Käivitage ex02.py Pythoni skript järgmise käsuga:

$ python3 ex02.py

Nagu näete, on e -posti ja parooli tekstiväljad täidetud meie näiväärtustega ja Logi sisse nuppu vajutatakse.

Seejärel navigeerib leht järgmisele lehele.

Elementide leidmine osalise teksti järgi:

Varasemas osas olen näidanud teile, kuidas leida elemente konkreetse teksti järgi. Selles jaotises näitan teile, kuidas leida osalise teksti abil veebilehtedelt elemente.

Näites ex01.py , Olen otsinud lingielementi, millel on tekst Unustasite konto? . Saate otsida sama lingielementi, kasutades osalist teksti, näiteks Unustatud acc . Selleks saate kasutada sisaldab() XPath funktsioon, nagu on näidatud real 10 ex03.py . Ülejäänud koodid on samad, mis ex01.py . Tulemused jäävad samaks.

Reas 10 ex03.py , kasutati valikutingimust sisaldab (allikas, tekst) XPath funktsioon. See funktsioon võtab 2 argumenti, allikas, ja teksti .

The sisaldab() funktsioon kontrollib, kas teksti teises argumendis esitatud vastab osaliselt allikas väärtus esimeses argumendis.

Allikas võib olla elemendi tekst ( tekst () ) või elemendi atribuudi väärtus ( @attr_name ).

Sisse ex03.py , elemendi tekst on kontrollitud.

Teine kasulik XPath -funktsioon veebilehe elementide leidmiseks osalise teksti abil on algab-(allikas, tekst) . Sellel funktsioonil on samad argumendid nagu sisaldab() funktsiooni ja seda kasutatakse samal viisil. Ainus erinevus on see, et algab tähega () funktsioon kontrollib, kas teine ​​argument teksti on esimese argumendi algusstring allikas .

Olen näite ümber kirjutanud ex03.py otsida elementi, millega tekst algab Unustatud, nagu näete real 10 ex04.py . Tulemus on sama mis aastal ex02 ja ex03.py .

Olen ka ümber kirjutanud ex02.py nii et see otsib sisendelementi, mille jaoks väärtus atribuut algab Logi, nagu näete real 13 ex05.py . Tulemus on sama mis aastal ex02.py .

Järeldus:

Selles artiklis olen näidanud teile, kuidas Selenium Pythoni raamatukogu abil teksti järgi veebilehtedelt elemente leida ja valida. Nüüd peaksite Selenium Pythoni raamatukogu abil leidma veebilehtede elemente konkreetse teksti või osalise teksti järgi.