Kako pronaći element pomoću teksta sa selenom

How Find Element Text With Selenium



Lociranje i odabir elemenata s web stranice ključ je za struganje weba pomoću Selenium. Elemente možete odabrati pomoću naziva oznake, ID -a, naziva klase, XPath birača, CSS birača itd. U Selenium -u. Pomoću selena možete odabrati i elemente koji imaju određeni tekst. Ovo je korisno za lak odabir veza i gumba s web stranice. Čak i ako se struktura stranice promijeni, sve dok tekst elementa web stranice ostaje isti, vaš birač trebao bi raditi sasvim u redu. Ovo je prednost odabira veza i gumba pomoću teksta u Seleniumu.

U ovom članku pokazat ću vam kako locirati i odabrati elemente s web stranica pomoću teksta u Seleniumu s bibliotekom Selenium python. Dakle, krenimo.







Preduvjeti:

Da biste isprobali naredbe i primjere ovog članka, morate imati:



  1. Linux distribucija (po mogućnosti Ubuntu) instalirana na vašem računalu.
  2. Python 3 instaliran na vašem računalu.
  3. PIP 3 instaliran na vašem računalu.
  4. Piton virtualenv paket instaliran na vašem računalu.
  5. Mozilla Firefox ili Google Chrome web preglednici instalirani na vašem računalu.
  6. Morate znati kako instalirati Firefox Gecko upravljački program ili Chrome web upravljački program.

Kako biste ispunili uvjete 4, 5 i 6, pročitajte moj članak Uvod u selen u Pythonu 3 .



Možete pronaći mnoge članke o drugim temama na LinuxHint.com . Svakako ih provjerite ako trebate pomoć.





Postavljanje direktorija projekta:

Da bi sve bilo organizirano, izradite novi direktorij projekta selenium-text-select/ kako slijedi:

$mkdir -pvselenium-text-select/vozači



Idite na selenium-text-select/ direktorij projekta na sljedeći način:

$CDselenium-text-select/

Napravite Python virtualno okruženje u direktoriju projekta na sljedeći način:

$virtualenv .venv

Aktivirajte virtualno okruženje na sljedeći način:

$izvor.venv/am/aktivirati

Biblioteku Selenium Python instalirajte pomoću PIP3 na sljedeći način:

$ pip3 instalirajte selen

Preuzmite i instalirajte sve potrebne web upravljačke programe u vozači/ imenik projekta. U svom sam članku objasnio postupak preuzimanja i instaliranja mrežnih upravljačkih programa Uvod u selen u Pythonu 3 .

Traženje elemenata tekstom:

U ovom odjeljku pokazat ću vam neke primjere pronalaženja i odabira elemenata web stranice po tekstu pomoću biblioteke Selenium Python.

Počet ću s najjednostavnijim primjerom odabira elemenata web stranice prema tekstu, odabirom veza s web stranice.

Na stranici za prijavu na facebook.com imamo vezu Zaboravljeni račun? Kao što možete vidjeti na slici ispod. Odaberimo ovu vezu sa selenom.

Izradite novu skriptu Python ex01.py i upišite sljedeće redove kodova u nju.

izselenuvozwebdriver
izselen.webdriver.uobičajen.ključeve uvozKljučevi
izselen.webdriver.uobičajen.po uvozPo
iz vrijeme uvozspavati
preglednik=webdriver.Krom(izvršni_put='./drivers/chromedriver')
preglednik.dobiti('https://www.facebook.com/')
zaboravioAccountLink=preglednik.pronađi_element(Po.XPATH, '
//*[text () = 'Zaboravili ste račun?'] '
)
zaboravioAccountLink.send_ključevi(Ključevi.UNESI)

Kada završite, spremite ex01.py Python skripta.

Redak 1-4 uvozi sve potrebne komponente u program Python.

Redak 6 stvara Chrome preglednik objekt pomoću kromirani upravljač binarni iz vozači/ imenik projekta.

Redak 8 govori pregledniku da učita web stranicu facebook.com.

U retku 10 nalazi se veza s tekstom Zaboravljeni račun? Korištenje XPath birača. Za to sam upotrijebio XPath birač //*[text () = ’Zaboravili ste račun?’] .

Birač XPath počinje s //, što znači da element može biti bilo gdje na stranici. The * simbol govori Seleneu da odabere bilo koju oznaku ( do ili str ili raspon, itd.) koji odgovara stanju unutar uglatih zagrada [] . Ovdje je uvjet sljedeći: tekst elementa jednak je Zaboravljeni račun?

The tekst() XPath funkcija koristi se za dobivanje teksta elementa.

Na primjer, tekst() vraća Pozdrav svijete ako odabere sljedeći HTML element.

< do href='http://dummysite.com'>Pozdrav svijete</ do >

Linija 11 šalje pritiskom na tipku Zaboravljeni račun? Veza.

Pokrenite Python skriptu ex01.py sa sljedećom naredbom:

$ python ex01.py

Kao što vidite, web preglednik pronalazi, odabire i pritišće ključ na Zaboravljeni račun? Veza.

The Zaboravljeni račun? Veza vodi preglednik na sljedeću stranicu.

Na isti način možete jednostavno pretraživati ​​elemente koji imaju željenu vrijednost atributa.

Evo, Prijaviti se gumb je an ulazni element koji ima vrijednost atribut Prijaviti se . Pogledajmo kako odabrati ovaj element po tekstu.

Izradite novu skriptu Python ex02.py i upišite sljedeće redove kodova u nju.

izselenuvozwebdriver
izselen.webdriver.uobičajen.ključeve uvozKljučevi
izselen.webdriver.uobičajen.po uvozPo
iz vrijeme uvozspavati
preglednik=webdriver.Krom(izvršni_put='./drivers/chromedriver')
preglednik.dobiti('https://www.facebook.com/')
spavati(5)
emailInput=preglednik.pronađi_element(Po.XPATH, '// input [@id =' email ']')
passwordInput=preglednik.pronađi_element(Po.XPATH, '// input [@id =' pass ']')
loginButton=preglednik.pronađi_element(Po.XPATH, '//*[@value =' Prijavite se ']')
emailInput.send_ključevi('[zaštićena e -pošta]')
spavati(5)
passwordInput.send_ključevi('secret-pass')
spavati(5)
loginButton.send_ključevi(Ključevi.UNESI)

Kada završite, spremite ex02.py Python skripta.

Redak 1-4 uvozi sve potrebne komponente.

Redak 6 stvara Chrome preglednik objekt pomoću kromirani upravljač binarni iz vozači/ imenik projekta.

Redak 8 govori pregledniku da učita web stranicu facebook.com.

Sve se dogodi tako brzo kad pokrenete skriptu. Dakle, ja sam koristio spavati() funkcionira više puta ex02.py za odgađanje naredbi preglednika. Na ovaj način možete promatrati kako sve funkcionira.

Redak 11 pronalazi tekstualni okvir za unos e -pošte i sprema referencu elementa u emailInput promjenjivo.

Redak 12 pronalazi tekstualni okvir za unos e -pošte i sprema referencu elementa u emailInput promjenjivo.

Redak 13 pronalazi ulazni element koji ima atribut vrijednost od Prijaviti se pomoću XPath birača. Za to sam upotrijebio XPath birač //*[@value = 'Prijava'] .

Birač XPath počinje s // . To znači da element može biti bilo gdje na stranici. The * simbol govori Seleneu da odabere bilo koju oznaku ( ulazni ili str ili raspon, itd.) koji odgovara stanju unutar uglatih zagrada [] . Ovdje je uvjet atribut elementa vrijednost jednako je Prijaviti se .

Redak 15 šalje ulaz[zaštićena e -pošta]u tekstualni okvir za unos e -pošte, a redak 16 odgađa sljedeću operaciju.

Redak 18 šalje ulazni tajni prolaz u tekstualni okvir za unos lozinke, a redak 19 odgađa sljedeću operaciju.

Linija 21 šalje pritiskom na tipku za prijavu.

Pokrenite ex02.py Python skripta sa sljedećom naredbom:

$ python3 ex02.py

Kao što vidite, tekstualni okviri e -pošte i lozinke ispunjeni su našim lažnim vrijednostima, a Prijaviti se pritisnuto dugme.

Zatim se stranica pomiče na sljedeću stranicu.

Pronalaženje elemenata djelomičnim tekstom:

U prethodnom odjeljku sam vam pokazao kako pronaći elemente prema određenom tekstu. U ovom odjeljku pokazat ću vam kako pronaći dijelove web stranica pomoću djelomičnog teksta.

U primjeru, ex01.py , Tražio sam element veze koji ima tekst Zaboravljeni račun? . Možete pretraživati ​​isti element veze pomoću djelomičnog teksta, kao što je Zaboravljeni acc . Da biste to učinili, možete koristiti sadrži () XPath funkcija, kako je prikazano u retku 10 od ex03.py . Ostali kodovi su isti kao u ex01.py . Rezultati će biti isti.

U retku 10 od ex03.py , odabrani uvjet odabira je sadrži (izvor, tekst) XPath funkcija. Ova funkcija ima 2 argumenta, izvor, i tekst .

The sadrži () funkcija provjerava je li tekst dano u drugom argumentu djelomično se podudara s izvor vrijednost u prvom argumentu.

Izvor može biti tekst elementa ( tekst() ) ili vrijednost atributa elementa ( @attr_name ).

U ex03.py , provjerava se tekst elementa.

Još jedna korisna XPath funkcija za pronalaženje elemenata s web stranice pomoću djelomičnog teksta je počinje s (izvor, tekst) . Ova funkcija ima iste argumente kao i sadrži () funkciju i koristi se na isti način. Jedina razlika je u tome što je počinje sa() funkcija provjerava je li drugi argument tekst početni je niz prvog argumenta izvor .

Prepisao sam primjer ex03.py za traženje elementa za koji tekst počinje Zaboravljen, kao što možete vidjeti u retku 10 od ex04.py . Rezultat je isti kao u ex02 i ex03.py .

Također sam prepisao ex02.py tako da traži ulazni element za koji vrijednost atribut počinje sa Dnevnik, kao što možete vidjeti u retku 13 od ex05.py . Rezultat je isti kao u ex02.py .

Zaključak:

U ovom članku sam vam pokazao kako pronaći i odabrati elemente s web stranica po tekstu pomoću biblioteke Selenium Python. Sada biste trebali moći pronaći elemente s web stranica prema određenom tekstu ili djelomičnom tekstu s bibliotekom Selenium Python.