Elementin löytäminen HTML -sivulta XPathin ja seleenin avulla

Using Xpath Selenium Find An Element Html Page



XPath, joka tunnetaan myös nimellä XML Path Language, on kieli elementtien valitsemiseksi XML -asiakirjasta. Koska HTML ja XML noudattavat samaa asiakirjarakennetta, XPathia voidaan käyttää myös elementtien valitsemiseen verkkosivulta.

Elementtien paikantaminen ja valitseminen verkkosivulta on avain web -kaavintaan seleenillä. Voit etsiä ja valita elementtejä verkkosivulta käyttämällä XPath -valitsimia Seleniumissa.





Tässä artikkelissa aion näyttää, kuinka voit etsiä ja valita elementtejä verkkosivuilta käyttämällä XPath -valitsimia Seleniumissa Selenium -python -kirjaston kanssa. Aloitetaan siis.



Edellytykset:

Jos haluat kokeilla tämän artikkelin komentoja ja esimerkkejä, sinulla on oltava



  1. Tietokoneeseesi on asennettu Linux -jakelu (mieluiten Ubuntu).
  2. Python 3 asennettu tietokoneellesi.
  3. PIP 3 asennettu tietokoneellesi.
  4. Python virtualenv tietokoneeseen asennettu paketti.
  5. Tietokoneellesi asennetut Mozilla Firefox- tai Google Chrome -selaimet.
  6. Sinun on tiedettävä, kuinka asentaa Firefox Gecko -ohjain tai Chrome -verkko -ohjain.

Jos haluat täyttää vaatimukset 4, 5 ja 6, lue artikkelini Johdatus seleeniin Python 3: ssa . Löydät monia artikkeleita muista aiheista LinuxHint.com . Muista tarkistaa ne, jos tarvitset apua.





Projektihakemiston määrittäminen:

Jos haluat pitää kaiken järjestyksessä, luo uusi projektihakemisto selenium-xpath/ seuraavasti:

$mkdir -pvseleeni-xpath/Kuljettajat



Siirry kohtaan selenium-xpath/ projektihakemisto seuraavasti:

$CDseleeni-xpath/

Luo Python -virtuaalinen ympäristö projektihakemistoon seuraavasti:

$virtualenv .venv

Aktivoi virtuaalinen ympäristö seuraavasti:

$lähde.venv/olen/aktivoida

Asenna Selenium Python -kirjasto PIP3: lla seuraavasti:

$ pip3 asenna seleeni

Lataa ja asenna kaikki tarvittavat web -ohjaimet Kuljettajat/ hankkeen hakemisto. Olen selittänyt artikkelissani web -ohjainten lataamisen ja asentamisen Johdatus seleeniin Python 3: ssa .

Hanki XPath Selector Chromen kehittäjätyökalulla:

Tässä osassa näytän sinulle, kuinka löydät Selenium-sovelluksella valittavan verkkosivuelementin XPath-valitsimen Google Chrome -selaimen sisäänrakennetun kehittäjätyökalun avulla.

Jos haluat saada XPath -valitsimen Google Chrome -selaimella, avaa Google Chrome ja käy verkkosivustolla, josta haluat poimia tietoja. Paina sitten hiiren oikeaa painiketta (RMB) sivun tyhjällä alueella ja napsauta Tarkastaa avata Chromen kehittäjätyökalu .

Voit myös painaa + Siirtää + Minä avata Chromen kehittäjätyökalu .

Chromen kehittäjätyökalu pitäisi avata.

Löydät haluamasi verkkosivuelementin HTML -esityksen napsauttamalla Tarkastaa (

) -kuvake, kuten alla olevassa kuvakaappauksessa on merkitty.

Vie hiiri haluamasi verkkosivuelementin päälle ja valitse se painamalla hiiren vasenta painiketta (LMB).

Valitsemasi verkkoelementin HTML -esitys korostuu kohdassa Elementit välilehti Chrome -kehittäjätyökalu, kuten näet alla olevasta kuvakaappauksesta.

Saat haluamasi elementin XPath -valitsimen valitsemalla elementin Elementit välilehti Chromen kehittäjätyökalu ja napsauta sitä hiiren kakkospainikkeella (RMB). Valitse sitten Kopio > Kopioi XPath, kuten alla olevassa kuvakaappauksessa on merkitty.

Olen liittänyt XPath -valitsimen tekstieditoriin. XPath -valitsin näyttää alla olevan kuvakaappauksen mukaisesti.

Hanki XPath Selector Firefoxin kehittäjätyökalulla:

Tässä osassa aion näyttää sinulle, kuinka löydät Selenium-sovelluksella valittavan verkkosivuelementin XPath-valitsimen Mozilla Firefox -selaimen sisäänrakennetun kehittäjätyökalun avulla.

Jos haluat saada XPath -valitsimen Firefox -selaimella, avaa Firefox ja käy verkkosivustolla, josta haluat poimia tietoja. Paina sitten hiiren oikeaa painiketta (RMB) sivun tyhjällä alueella ja napsauta Tarkasta elementti (Q) avata Firefoxin kehittäjätyökalu .

Firefoxin kehittäjätyökalu pitäisi avata.

Löydät haluamasi verkkosivuelementin HTML -esityksen napsauttamalla Tarkastaa (

) -kuvake, kuten alla olevassa kuvakaappauksessa on merkitty.

Vie hiiri haluamasi verkkosivuelementin päälle ja valitse se painamalla hiiren vasenta painiketta (LMB).

Valitsemasi verkkoelementin HTML -esitys korostuu kohdassa Tarkastaja välilehti Firefoxin kehittäjätyökalu, kuten näet alla olevasta kuvakaappauksesta.

Saat haluamasi elementin XPath -valitsimen valitsemalla elementin Tarkastaja välilehti Firefoxin kehittäjätyökalu ja napsauta sitä hiiren kakkospainikkeella (RMB). Valitse sitten Kopio > XPath kuten alla olevassa kuvakaappauksessa on merkitty.

Halutun elementin XPath -valitsimen pitäisi näyttää tältä.

Tietojen poimiminen verkkosivuilta XPath Selectorin avulla:

Tässä osassa näytän sinulle, kuinka voit valita verkkosivuelementtejä ja poimia niistä tietoja XPath -valitsimilla Selenium Python -kirjastoilla.

Luo ensin uusi Python -komentosarja ex01.py ja kirjoita seuraavat koodirivit.

alkaenseleenituontiWeb -ajuri
alkaenseleeni.Web -ajuri.yleinen.näppäimiä tuontiAvaimet
alkaenseleeni.Web -ajuri.yleinen.käyttäjältä tuontiLähettäjä
vaihtoehtoja=Web -ajuri.ChromeOptions()
vaihtoehtoja.päätön = Totta
selaimen=Web -ajuri.Kromi(suoritettava_polku='./drivers/chromedriver',
vaihtoehtoja=vaihtoehtoja)
selaimen.saada('https://www.unixtimestamp.com/')
aikaleima=selaimen.find_element_by_xpath('/html/body/div [1]/div [1]
/div [2]/div [1]/div/div/h3 [2] '
)
Tulosta('Nykyinen aikaleima: %s'%(aikaleima.teksti.jakaa('')[0]))
selaimen.kiinni()

Kun olet valmis, tallenna ex01.py Python -käsikirjoitus.

Rivi 1-3 tuo kaikki vaaditut seleenikomponentit.

Rivi 5 luo Chrome -asetukset -objektin ja rivi 6 ottaa käyttöön päätön tilan Chrome -selaimessa.

Rivi 8 luo Chromen selaimen objekti käyttämällä kromiohjain binaarinen Kuljettajat/ hankkeen hakemisto.

Rivi 10 kehottaa selainta lataamaan verkkosivuston unixtimestamp.com.

Rivi 12 löytää elementin, jolla on aikaleiman tiedot sivulta XPath -valitsimen avulla, ja tallentaa sen aikaleima muuttuja.

Rivi 13 jäsentää aikaleiman tiedot elementistä ja tulostaa ne konsoliin.

Olen kopioinut merkityn XPath -valitsimen h2 elementti alkaen unixtimestamp.com käyttämällä Chrome -kehittäjätyökalua.

Rivi 14 sulkee selaimen.

Suorita Python -komentosarja ex01.py seuraavasti:

$ python3 ex01.py

Kuten näet, aikaleiman tiedot tulostetaan näytölle.

Tässä olen käyttänyt browser.find_element_by_xpath (valitsin) menetelmä. Tämän menetelmän ainoa parametri on valitsin, joka on elementin XPath -valitsin.

Sijasta browser.find_element_by_xpath () menetelmää, voit myös käyttää browser.find_element (Tekijä, valitsin) menetelmä. Tämä menetelmä vaatii kaksi parametria. Ensimmäinen parametri Lähettäjä tulee olemaan Kirjailija: XPATH kuten käytämme XPath -valitsinta ja toista parametria valitsin on itse XPath -valitsin. Tulos on sama.

Nähdä miten browser.find_element () menetelmä toimii XPath -valitsimessa, luo uusi Python -komentosarja ex02.py , kopioi ja liitä kaikki rivit ex01.py kohteeseen ex02.py ja muutos rivi 12 kuten alla olevassa kuvakaappauksessa on merkitty.

Kuten näette, Python -komentosarja ex02.py antaa saman tuloksen kuin ex01.py .

$ python3 ex02.py

The browser.find_element_by_xpath () ja browser.find_element () menetelmiä käytetään yksittäisen elementin etsimiseen ja valitsemiseen verkkosivuilta. Jos haluat löytää ja valita useita elementtejä XPath -valitsimilla, sinun on käytettävä browser.find_elements_by_xpath () tai browser.find_elements () menetelmiä.

The browser.find_elements_by_xpath () menetelmä käyttää samaa argumenttia kuin browser.find_element_by_xpath () menetelmä.

The browser.find_elements () menetelmä käyttää samoja argumentteja kuin browser.find_element () menetelmä.

Katsotaanpa esimerkkiä nimiluettelon poimimisesta XPath -valitsimella random-name-generator.info Selenium Python -kirjaston kanssa.

Järjestämätön lista ( kuolla tunniste) on 10 klo jokaisen sisällä on satunnainen nimi. XPath valitaksesi kaikki klo tunnisteet kuolla tunniste tässä tapauksessa on //*[@id = main]/div [3]/div [2]/ol // li

Käydään läpi esimerkki useiden elementtien valitsemisesta verkkosivulta XPath -valitsimilla.

Luo uusi Python -komentosarja ex03.py ja kirjoita siihen seuraavat koodirivit.

alkaenseleenituontiWeb -ajuri
alkaenseleeni.Web -ajuri.yleinen.näppäimiä tuontiAvaimet
alkaenseleeni.Web -ajuri.yleinen.käyttäjältä tuontiLähettäjä
vaihtoehtoja=Web -ajuri.ChromeOptions()
vaihtoehtoja.päätön = Totta
selaimen=Web -ajuri.Kromi(suoritettava_polku='./drivers/chromedriver',
vaihtoehtoja=vaihtoehtoja)
selaimen.saada('http://random-name-generator.info/')
nimet=selaimen.find_elements_by_xpath(''
//*[@id = 'main']/div [3]/div [2]/ol // li '
)
vartennimisisäännimet:
Tulosta(nimi.teksti)
selaimen.kiinni()

Kun olet valmis, tallenna ex03.py Python -käsikirjoitus.

Rivi 1-8 on sama kuin kohdassa ex01.py Python -käsikirjoitus. Joten en aio selittää niitä täällä uudelleen.

Rivi 10 kehottaa selainta lataamaan sivuston random-name-generator.info.

Rivi 12 valitsee nimiluettelon näppäimillä browser.find_elements_by_xpath () menetelmä. Tämä menetelmä käyttää XPath -valitsinta //*[@id = main]/div [3]/div [2]/ol // li löytääksesi nimiluettelon. Tämän jälkeen nimiluettelo tallennetaan nimet muuttuja.

Rivillä 13 ja 14 a varten silmukkaa käytetään iterointiin nimet luettelo ja tulosta nimet konsoliin.

Rivi 16 sulkee selaimen.

Suorita Python -komentosarja ex03.py seuraavasti:

$ python3 ex03.py

Kuten näette, nimet poimitaan verkkosivulta ja tulostetaan konsoliin.

Käyttämisen sijasta browser.find_elements_by_xpath () menetelmää, voit käyttää myös browser.find_elements () menetelmä kuten ennenkin. Tämän menetelmän ensimmäinen argumentti on Kirjailija: XPATH, ja toinen argumentti on XPath -valitsin.

Kokeilemaan browser.find_elements () menetelmä, luo uusi Python -komentosarja ex04.py , kopioi kaikki koodit ex03.py kohteeseen ex04.py ja muuta riviä 12 alla olevan kuvakaappauksen mukaisesti.

Sinun pitäisi saada sama tulos kuin ennen.

$ python3 ex04.py

XPath Selectorin perusteet:

Firefoxin tai Google Chrome -selaimen kehittäjätyökalu luo XPath -valitsimen automaattisesti. Mutta nämä XPath -valitsimet eivät joskus riitä projektillesi. Siinä tapauksessa sinun on tiedettävä, mitä tietty XPath -valitsin tekee rakentaaksesi XPath -valitsimen. Tässä osassa aion näyttää sinulle XPath -valitsimien perusteet. Sitten sinun pitäisi pystyä rakentamaan oma XPath -valitsin.

Luo uusi hakemisto www/ projektihakemistossasi seuraavasti:

$mkdir -vwww

Luo uusi tiedosto web01.html kohdassa www/ hakemisto ja kirjoita seuraavat rivit kyseiseen tiedostoon.


< html lang='päällä'>
< pää >
< meta merkistö='UTF-8'>
< meta nimi='näkymä' sisältö='width = device-width, initial-scale = 1.0'>
< otsikko >HTML -perusasiakirja</ otsikko >
</ pää >
< vartalo >
< h1 >Hei maailma</ h1 >
</ vartalo >
</ html >

Kun olet valmis, tallenna web01.html tiedosto.

Suorita yksinkertainen HTTP -palvelin porttiin 8080 käyttämällä seuraavaa komentoa:

$ python3 -m http.palvelin--hakemisto www/8080

HTTP -palvelimen pitäisi käynnistyä.

Sinun pitäisi voida käyttää web01.html tiedosto käyttämällä URL -osoitetta http: // localhost: 8080/web01.html , kuten näet alla olevasta kuvakaappauksesta.

Kun Firefox- tai Chrome -kehittäjätyökalu on auki, paina + F hakukentän avaamiseksi. Voit kirjoittaa XPath -valitsimen tähän ja nähdä, mitä se valitsee erittäin helposti. Aion käyttää tätä työkalua koko tämän osan.

XPath -valitsin alkaa a vinoviiva (/) suurimman osan ajasta. Se on kuin Linux -hakemistopuu. The / on kaikkien verkkosivun elementtien juuri.

Ensimmäinen elementti on html . Joten XPath -valitsin /html valitsee koko html tag.

Sisällä html tunniste, meillä on vartalo tag. The vartalo tunniste voidaan valita XPath -valitsimella /html/body

The h1 otsikko on vartalo tag. The h1 otsikon voi valita XPath -valitsimella /html/body/h1

Tämän tyyppistä XPath -valitsinta kutsutaan absoluuttiseksi polunvalitsijaksi. Absoluuttisen polun valitsimessa sinun on kuljettava verkkosivu sivun juuresta (/). Absoluuttisen polunvalitsimen haittapuoli on se, että jopa pieni muutos verkkosivun rakenteessa voi tehdä XPath -valitsimen virheelliseksi. Ratkaisu tähän ongelmaan on suhteellinen tai osittainen XPath -valitsin.

Jos haluat nähdä, miten suhteellinen polku tai osittainen polku toimii, luo uusi tiedosto web02.html kohdassa www/ hakemisto ja kirjoita siihen seuraavat koodirivit.


< html lang='päällä'>
< pää >
< meta merkistö='UTF-8'>
< meta nimi='näkymä' sisältö='width = device-width, initial-scale = 1.0'>
< otsikko >HTML -perusasiakirja</ otsikko >
</ pää >
< vartalo >
< h1 >Hei maailma</ h1 >

< div >
< s >tämä on viesti</ s >
</ div >

< div >
< span >Hei maailma</ span >
</ div >
</ vartalo >
</ html >

Kun olet valmis, tallenna web02.html tiedosto ja lataa se verkkoselaimeesi.

Kuten näette, XPath -valitsin // div/s valitsee s tunnisteen sisällä div tag. Tämä on esimerkki suhteellisesta XPath -valitsimesta.

Suhteellinen XPath -valitsin alkaa merkillä // . Määritä sitten sen elementin rakenne, jonka haluat valita. Tässä tapauksessa, div/s .

Niin, // div/s tarkoittaa valita s elementti a div elementti, ei ole väliä mitä sitä edeltää.

Voit myös valita elementtejä eri ominaisuuksien, kuten esim id , luokka , tyyppi, jne. XPath -valitsimella. Katsotaan kuinka se tehdään.

Luo uusi tiedosto web03.html kohdassa www/ hakemisto ja kirjoita siihen seuraavat koodirivit.


< html lang='päällä'>
< pää >
< meta merkistö='UTF-8'>
< meta nimi='näkymä' sisältö='width = device-width, initial-scale = 1.0'>
< otsikko > HTML -perusasiakirja</ otsikko >
</ pää >
< vartalo >
< h1 > Hei maailma</ h1 >
< div luokka='kontti1'>
< s > tämä on viesti</ s >
< span > tämä on toinen viesti</ span >
</ div >
< div luokka='kontti1'>
< h2 > otsikko2</ h2 >
< s > Jotkut ihmiset
viisasta valita tuskat, vaivat, ne, jotka eivät kuulu valitulle
helpot lennot tai muut hienot palvelut? Mistä tai mistä hän syntyi?</ s >
</ div >

< span id='alatunniste-viesti'> tämä on alatunniste</ span >
</alatunniste>
</ vartalo >
</ html >

Kun olet valmis, tallenna web03.html tiedosto ja lataa se verkkoselaimeesi.

Oletetaan, että haluat valita kaikki div elementtejä, joilla on luokka nimi säiliö 1 . Voit tehdä sen käyttämällä XPath -valitsinta // div [@class = ’container1 ′]

Kuten näette, minulla on 2 elementtiä, jotka vastaavat XPath -valitsinta // div [@class = ’container1 ′]

Voit valita ensimmäisen div elementti luokka nimi säiliö 1 , lisätä [1] Valitse XPathin lopussa, kuten alla olevassa kuvakaappauksessa näkyy.

Samalla tavalla voit valita toisen div elementti luokka nimi säiliö 1 XPath -valitsimen avulla // div [@class = ’container1 ′] [2]

Voit valita elementtejä id yhtä hyvin.

Voit esimerkiksi valita elementin, jolla on id / alatunniste-viesti , voit käyttää XPath -valitsinta //*[@id = ’footer-msg’]

Tässä, * ennen [@id = ’footer-msg’] käytetään minkä tahansa elementin valitsemiseen tagista riippumatta.

Siinä XPath -valitsimen perusteet. Nyt sinun pitäisi pystyä luomaan oma XPath -valitsin Selenium -projekteillesi.

Johtopäätös:

Tässä artikkelissa olen näyttänyt sinulle, kuinka löydät ja valitset elementtejä verkkosivuilta XPath -valitsimella Selenium Python -kirjaston kanssa. Olen keskustellut myös yleisimmistä XPath -valitsimista. Tämän artikkelin lukemisen jälkeen sinun pitäisi tuntea olosi melko luottavaiseksi valitsemalla elementtejä verkkosivuilta XPath -valitsimella ja Selenium Python -kirjastolla.