Korištenje XPath -a i selena za pronalaženje elementa na HTML stranici

Using Xpath Selenium Find An Element Html Page



XPath, također poznat kao XML Path Language, jezik je za odabir elemenata iz XML dokumenta. Budući da HTML i XML slijede istu strukturu dokumenta, XPath se također može koristiti za odabir elemenata s web stranice.

Lociranje i odabir elemenata s web stranice ključ je za struganje weba pomoću Selenium. Za lociranje i odabir elemenata s web stranice možete koristiti XPath selektore u Selenium.





U ovom ću vam članku pokazati kako locirati i odabrati elemente s web stranica pomoću XPath selektora 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-xpath/ kako slijedi:

$mkdir -pvselen-xpath/vozači



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

$CDselen-xpath/

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 .

Nabavite XPath Selector pomoću alata za razvojne programere Chrome:

U ovom odjeljku pokazat ću vam kako pronaći selektor XPath elementa web stranice koji želite odabrati pomoću Selenium pomoću ugrađenog alata za razvojne programere web preglednika Google Chrome.

Da biste dobili izbornik XPath pomoću web preglednika Google Chrome, otvorite Google Chrome i posjetite web mjesto s kojeg želite izdvojiti podatke. Zatim pritisnite desnu tipku miša (RMB) na prazno područje stranice i kliknite na Pregledati za otvaranje Alat za razvojne programere Chrome .

Također možete pritisnuti + Pomicanje + Ja za otvaranje Alat za razvojne programere Chrome .

Alat za razvojne programere Chrome treba otvoriti.

Da biste pronašli HTML prikaz željenog elementa web stranice, kliknite na Pregledati (

), kako je označeno na slici ispod.

Zatim zadržite pokazivač miša iznad željenog elementa web stranice i pritisnite lijevu tipku miša (LMB) za odabir.

HTML prikaz web elementa koji ste odabrali bit će istaknut u Elementi karticu Alat za razvojne programere Chrome, kao što možete vidjeti na slici ispod.

Da biste dobili XPath birač željenog elementa, odaberite element iz Elementi kartica od Alat za razvojne programere Chrome i desnom tipkom miša kliknite (RMB) na nju. Zatim odaberite Kopirati > Kopirajte XPath, kako je označeno na donjoj snimci zaslona.

Zalijepio sam XPath birač u uređivač teksta. Birač XPath izgleda kako je prikazano na slici ispod.

Nabavite XPath Selector pomoću Firefox alata za programere:

U ovom odjeljku pokazat ću vam kako pronaći selektor XPath elementa web stranice koji želite odabrati pomoću Selenium pomoću ugrađenog alata za razvojne programere Mozilla Firefox web preglednika.

Da biste dobili izbornik XPath pomoću web preglednika Firefox, otvorite Firefox i posjetite web mjesto s kojeg želite izdvojiti podatke. Zatim pritisnite desnu tipku miša (RMB) na prazno područje stranice i kliknite na Pregledajte element (Q) za otvaranje Alat za razvojne programere Firefoxa .

Alat za razvojne programere Firefoxa treba otvoriti.

Da biste pronašli HTML prikaz željenog elementa web stranice, kliknite na Pregledati (

), kako je označeno na slici ispod.

Zatim zadržite pokazivač miša iznad željenog elementa web stranice i pritisnite lijevu tipku miša (LMB) za odabir.

HTML prikaz web elementa koji ste odabrali bit će istaknut u Inspektor kartica od Alat za razvojne programere Firefoxa, kao što možete vidjeti na slici ispod.

Da biste dobili XPath birač željenog elementa, odaberite element iz Inspektor kartica od Alat za razvojne programere Firefoxa i desnom tipkom miša kliknite (RMB) na nju. Zatim odaberite Kopirati > XPath kako je označeno na donjoj snimci zaslona.

Birač XPath željenog elementa trebao bi izgledati otprilike ovako.

Izdvajanje podataka s web stranica pomoću XPath selektora:

U ovom odjeljku pokazat ću vam kako odabrati elemente web stranice i iz njih izvući podatke pomoću XPath selektora s bibliotekom Selenium Python.

Prvo stvorite novu skriptu Python ex01.py i upišite sljedeće redove kodova.

izselenuvozwebdriver
izselen.webdriver.uobičajen.ključeve uvozKljučevi
izselen.webdriver.uobičajen.po uvozPo
mogućnosti=webdriver.ChromeOpcije()
mogućnosti.bezglav = Pravi
preglednik=webdriver.Krom(izvršni_put='./drivers/chromedriver',
mogućnosti=mogućnosti)
preglednik.dobiti('https://www.unixtimestamp.com/')
vremenska oznaka=preglednik.find_element_by_xpath('/html/body/div [1]/div [1]
/div [2]/div [1]/div/div/h3 [2] '
)
ispisati('Trenutna vremenska oznaka: %s'%(vremenska oznaka.tekst.podjela('')[0]))
preglednik.Zatvoriti()

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

Linija 1-3 uvozi sve potrebne komponente selena.

Redak 5 stvara objekt Chromeove mogućnosti, a redak 6 omogućuje način rada bez glave za web -preglednik Chrome.

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

Redak 10 govori pregledniku da učita web stranicu unixtimestamp.com.

Redak 12 pronalazi element koji ima podatke o vremenskoj oznaci sa stranice pomoću birača XPath i pohranjuje ga u vremenska oznaka promjenjivo.

Redak 13 analizira podatke vremenske oznake iz elementa i ispisuje ih na konzoli.

Kopirao sam XPath birač označenih h2 element iz unixtimestamp.com pomoću alata za razvojne programere Chrome.

Redak 14 zatvara preglednik.

Pokrenite Python skriptu ex01.py kako slijedi:

$ python3 ex01.py

Kao što vidite, podaci o vremenskoj oznaci ispisuju se na ekranu.

Evo, ja sam koristio browser.find_element_by_xpath (birač) metoda. Jedini parametar ove metode je selektor, koji je izbornik XPath elementa.

Umjesto browser.find_element_by_xpath () metodu, također možete koristiti browser.find_element (By, birač) metoda. Ova metoda zahtijeva dva parametra. Prvi parametar Po bit će Autor.XPATH kao što ćemo koristiti izbornik XPath i drugi parametar selektor bit će sam XPath birač. Rezultat će biti isti.

Da vidite kako browser.find_element () metoda radi za XPath selektor, stvorite novu Python skriptu ex02.py , kopirajte i zalijepite sve retke iz ex01.py do ex02.py i promijeniti redak 12 kako je označeno na donjoj snimci zaslona.

Kao što vidite, skripta Python ex02.py daje isti rezultat kao ex01.py .

$ python3 ex02.py

The browser.find_element_by_xpath () i browser.find_element () metode se koriste za pronalaženje i odabir jednog elementa s web stranica. Ako želite pronaći i odabrati više elemenata pomoću XPath birača, morate ih koristiti browser.find_elements_by_xpath () ili browser.find_elements () metodama.

The browser.find_elements_by_xpath () metoda uzima isti argument kao i browser.find_element_by_xpath () metoda.

The browser.find_elements () metoda uzima iste argumente kao i browser.find_element () metoda.

Pogledajmo primjer vađenja popisa imena pomoću XPath birača iz generator nasumičnih imena.info s bibliotekom Selenium Python.

Neuređen popis ( umrijeti oznaka) ima 10 kod oznake unutar svake sadrže nasumični naziv. XPath za odabir svih kod oznake unutar umrijeti oznaka u ovom slučaju je //*[@id = main]/div [3]/div [2]/ol // li

Idemo kroz primjer odabira više elemenata s web stranice pomoću XPath birača.

Izradite novu skriptu Python ex03.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
mogućnosti=webdriver.ChromeOpcije()
mogućnosti.bezglav = Pravi
preglednik=webdriver.Krom(izvršni_put='./drivers/chromedriver',
mogućnosti=mogućnosti)
preglednik.dobiti('http://random-name-generator.info/')
imena=preglednik.find_elements_by_xpath('
//*[@id = 'main']/div [3]/div [2]/ol // li '
)
zaImeuimena:
ispisati(Ime.tekst)
preglednik.Zatvoriti()

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

Redak 1-8 isti je kao u ex01.py Python skripta. Dakle, neću ih ovdje opet objašnjavati.

Redak 10 govori pregledniku da učita web stranicu random-name-generator.info.

Redak 12 bira popis imena pomoću browser.find_elements_by_xpath () metoda. Ova metoda koristi birač XPath //*[@id = main]/div [3]/div [2]/ol // li da biste pronašli popis imena. Zatim se popis imena pohranjuje u imena promjenjivo.

U retcima 13 i 14, a za petlja se koristi za ponavljanje kroz imena popis i ispis imena na konzoli.

Redak 16 zatvara preglednik.

Pokrenite Python skriptu ex03.py kako slijedi:

$ python3 ex03.py

Kao što vidite, imena se izdvajaju s web stranice i ispisuju na konzoli.

Umjesto da koristite browser.find_elements_by_xpath () metodu, možete koristiti i browser.find_elements () metoda kao i prije. Prvi argument ove metode je Autor.XPATH, a drugi argument je birač XPath.

Za eksperimentiranje browser.find_elements () metodu, stvorite novu skriptu Python ex04.py , kopirajte sve kodove iz ex03.py do ex04.py , i promijenite redak 12 kako je označeno na slici ispod.

Trebali biste dobiti isti rezultat kao i prije.

$ python3 ex04.py

Osnove programa XPath Selector:

Alat za programere Firefoxa ili web preglednika Google Chrome automatski generira XPath birač. Ali ti XPath birači ponekad nisu dovoljni za vaš projekt. U tom slučaju morate znati što određeni izbornik XPath čini kako bi izgradio vaš izbornik XPath. U ovom odjeljku pokazat ću vam osnove XPath selektora. Zatim biste trebali moći izgraditi vlastiti XPath birač.

Izradite novi direktorij www/ u direktoriju vašeg projekta na sljedeći način:

$mkdir -vwww

Napravite novu datoteku web01.html u www/ direktorij i upišite sljedeće retke u tu datoteku.


< html lang='na'>
< glava >
< meta charset='UTF-8'>
< meta Ime='okvir za prikaz' sadržaj='width = device-width, initial-scale = 1,0'>
< titula >Osnovni HTML dokument</ titula >
</ glava >
< tijelo >
< h1 >Pozdrav svijete</ h1 >
</ tijelo >
</ html >

Kada završite, spremite web01.html datoteka.

Pokrenite jednostavan HTTP poslužitelj na portu 8080 pomoću sljedeće naredbe:

$ python3 -m http.poslužitelja--direktorij www/8080

HTTP poslužitelj bi se trebao pokrenuti.

Trebali biste imati pristup web01.html datoteku koristeći URL http: // localhost: 8080/web01.html , kao što možete vidjeti na slici ispod.

Dok je otvoren Firefox ili Chrome Developer Tool, pritisnite + Ž za otvaranje okvira za pretraživanje. Ovdje možete upisati svoj XPath birač i vidjeti što odabire vrlo lako. Koristit ću ovaj alat u ovom odjeljku.

Birač XPath počinje s kosa crta (/) većinu vremena. To je poput stabla direktorija u Linuxu. The / je korijen svih elemenata na web stranici.

Prvi element je html . Dakle, izbornik XPath /html odabire cjelinu html označiti.

Unutar html oznaka, imamo a tijelo označiti. The tijelo oznaka se može odabrati pomoću XPath birača /html/body

The h1 zaglavlje je unutar tijelo označiti. The h1 zaglavlje se može odabrati pomoću XPath birača /html/body/h1

Ova vrsta izbornika XPath naziva se apsolutni birač puta. U apsolutnom biraču putanje morate prijeći web stranicu od korijena (/) stranice. Nedostatak apsolutnog birača puta je što čak i mala promjena u strukturi web stranice može učiniti vaš XPath birač nevažećim. Rješenje ovog problema je relativni ili djelomični XPath birač.

Da biste vidjeli kako funkcionira relativni put ili djelomični put, izradite novu datoteku web02.html u www/ imenik i upišite sljedeće redove kodova u njega.


< html lang='na'>
< glava >
< meta charset='UTF-8'>
< meta Ime='okvir za prikaz' sadržaj='width = device-width, initial-scale = 1,0'>
< titula >Osnovni HTML dokument</ titula >
</ glava >
< tijelo >
< h1 >Pozdrav svijete</ h1 >

< div >
< str >ovo je poruka</ str >
</ div >

< div >
< raspon >Pozdrav svijete</ raspon >
</ div >
</ tijelo >
</ html >

Kada završite, spremite web02.html datoteku i učitajte je u svoj web preglednik.

Kao što vidite, izbornik XPath // div/str odabire str oznaka unutar div označiti. Ovo je primjer relativnog XPath birača.

Birač relativnog XPath -a počinje s // . Zatim određujete strukturu elementa koji želite odabrati. U ovom slučaju, div/str .

Tako, // div/str znači odaberite str element unutar a div element, nije važno što dolazi prije njega.

Također možete odabrati elemente prema različitim atributima, poput iskaznica , razred , tip, itd. pomoću XPath birača. Pogledajmo kako to učiniti.

Napravite novu datoteku web03.html u www/ imenik i upišite sljedeće redove kodova u njega.


< html lang='na'>
< glava >
< meta charset='UTF-8'>
< meta Ime='okvir za prikaz' sadržaj='width = device-width, initial-scale = 1,0'>
< titula > Osnovni HTML dokument</ titula >
</ glava >
< tijelo >
< h1 > Zdravo Svijete</ h1 >
< div razred='spremnik 1'>
< str > ovo je poruka</ str >
< raspon > ovo je druga poruka</ raspon >
</ div >
< div razred='spremnik 1'>
< h2 > naslov2</ h2 >
< str > Neki ljudi
mudro izabrati boli, nevolje i one koje ne padaju na izabranog
nisu laki letovi i druge odlične usluge? Odakle ili odakle je rođen?</ str >
</ div >

< raspon iskaznica='footer-msg'> ovo je podnožje</ raspon >
</podnožje>
</ tijelo >
</ html >

Kada završite, spremite web03.html datoteku i učitajte je u svoj web preglednik.

Recimo da želite odabrati sve div elementi koji imaju razred Ime kontejner 1 . Da biste to učinili, možete koristiti izbornik XPath // div [@class = ’spremnik1 ′]

Kao što vidite, imam 2 elementa koji odgovaraju XPath selektoru // div [@class = ’spremnik1 ′]

Za odabir prvog div element sa razred Ime kontejner 1 , dodati [1] na kraju XPath odabira, kao što je prikazano na slici ispod.

Na isti način možete odabrati drugi div element sa razred Ime kontejner 1 pomoću birača XPath // div [@class = ’container1 ′] [2]

Elemente možete odabrati prema iskaznica također.

Na primjer, za odabir elementa koji ima iskaznica od podnožje-poruka , možete koristiti XPath birač //*[@id = ’footer-msg’]

Evo, * prije [@id = ’footer-msg’] koristi se za odabir bilo kojeg elementa bez obzira na njegovu oznaku.

To su osnove XPath birača. Sada biste trebali moći stvoriti vlastiti XPath birač za svoje Selenium projekte.

Zaključak:

U ovom članku sam vam pokazao kako pronaći i odabrati elemente s web stranica pomoću XPath izbornika s bibliotekom Selenium Python. Također sam raspravljao o najčešćim XPath biračima. Nakon što pročitate ovaj članak, trebali biste se osjećati prilično samouvjereno odabirom elemenata s web stranica pomoću XPath selektora s bibliotekom Selenium Python.