Selenium

XPath ir Selenium naudojimas norint rasti elementą HTML puslapyje

XPath ir Selenium naudojimas norint rasti elementą HTML puslapyje
XPath, dar vadinama XML kelio kalba, yra kalba, skirta elementams pasirinkti iš XML dokumento. Kadangi HTML ir XML atitinka tą pačią dokumento struktūrą, XPath taip pat gali būti naudojamas elementams pasirinkti iš tinklalapio.

Elementų suradimas ir pasirinkimas iš tinklalapio yra raktas į žiniatinklio naudojimą naudojant „Selenium“. Norėdami rasti ir pasirinkti elementus iš tinklalapio, galite naudoti „XPath“ selektorius „Selenium“.

Šiame straipsnyje aš jums parodysiu, kaip rasti ir pasirinkti elementus iš tinklalapių, naudojant „Selath“ XPath selektorius su „Selenium python“ biblioteka. Taigi, pradėkime.

Būtinos sąlygos:

Norėdami išbandyti šio straipsnio komandas ir pavyzdžius, turite,

  1. „Linux“ paskirstymas (pageidautina „Ubuntu“), įdiegtas jūsų kompiuteryje.
  2. „Python 3“ įdiegtas jūsų kompiuteryje.
  3. PIP 3 įdiegtas jūsų kompiuteryje.
  4. „Python“ virtualenv paketą, įdiegtą jūsų kompiuteryje.
  5. Kompiuteryje įdiegtos „Mozilla Firefox“ arba „Google Chrome“ žiniatinklio naršyklės.
  6. Turi žinoti, kaip įdiegti „Firefox Gecko“ tvarkyklę arba „Chrome“ žiniatinklio tvarkyklę.

Norėdami įvykdyti 4, 5 ir 6 reikalavimus, perskaitykite mano straipsnį Įvadas į seleną „Python 3“. „LinuxHint“ galite rasti daug straipsnių kitomis temomis.com. Jei jums reikia pagalbos, būtinai patikrinkite juos.

Projektų katalogo nustatymas:

Kad viskas būtų tvarkinga, sukurkite naują projekto katalogą selenas-xpath / taip:

$ mkdir -pv selenium-xpath / tvarkyklės

Eikite į selenas-xpath / projekto katalogą taip:

$ cd selenas-xpath /

Projekto kataloge sukurkite virtualią „Python“ aplinką taip:

$ virtualenv .venv

Suaktyvinkite virtualią aplinką taip:

$ šaltinis .venv / bin / aktyvuoti

Įdiekite „Selenium Python“ biblioteką naudodami PIP3 taip:

$ pip3 įdiekite seleną

Atsisiųskite ir įdiekite visą reikiamą žiniatinklio tvarkyklę vairuotojai / projekto katalogas. Savo straipsnyje paaiškinau žiniatinklio tvarkyklių atsisiuntimo ir diegimo procesą Įvadas į seleną „Python 3“.

Gaukite „XPath Selector“ naudodami „Chrome“ kūrėjo įrankį:

Šiame skyriuje aš jums parodysiu, kaip rasti „Selenium“ norimo pasirinkti tinklalapio elemento „XPath“ selektorių naudojant „Google Chrome“ žiniatinklio naršyklės integruotą kūrėjo įrankį.

Norėdami gauti „XPath“ selektorių naudodami „Google Chrome“ žiniatinklio naršyklę, atidarykite „Google Chrome“ ir apsilankykite svetainėje, iš kurios norite išgauti duomenis. Tada tuščiame puslapio plote paspauskite dešinį pelės mygtuką (RMB) ir spustelėkite Apžiūrėkite atidaryti „Chrome“ kūrėjo įrankis.

Taip pat galite paspausti + „Shift“ + atidaryti „Chrome“ kūrėjo įrankis.

„Chrome“ kūrėjo įrankis turėtų būti atidaryta.

Norėdami rasti norimo tinklalapio elemento HTML vaizdą, spustelėkite Apžiūrėkite(

) piktogramą, kaip pažymėta toliau pateiktoje ekrano kopijoje.

Tada užveskite pelės žymeklį virš norimo tinklalapio elemento ir paspauskite kairįjį pelės mygtuką (LMB), kad jį pasirinktumėte.

Pasirinkto žiniatinklio elemento HTML atvaizdavimas bus paryškintas Elementai skirtukas „Chrome“ kūrėjo įrankis, kaip matote toliau pateiktoje ekrano kopijoje.

Norėdami gauti norimo elemento XPath parinkiklį, pasirinkite elementą iš Elementai skirtukas „Chrome“ kūrėjo įrankis ir dešiniuoju pelės mygtuku spustelėkite (RMB) ant jo. Tada pasirinkite Kopijuoti > Kopijuoti XPath, kaip pažymėta toliau pateiktoje ekrano kopijoje.

Įklijavau XPath selektorių į teksto rengyklę. „XPath“ parinkiklis atrodo taip, kaip parodyta žemiau esančiame paveikslėlyje.

Gaukite „XPath Selector“ naudodami „Firefox“ kūrėjų įrankį:

Šiame skyriuje aš jums parodysiu, kaip rasti „Selath“ pasirinkto tinklalapio elemento „XPath“ parinkiklį naudojant „Mozilla Firefox“ žiniatinklio naršyklės integruotą kūrėjo įrankį.

Norėdami gauti „XPath“ selektorių naudodami „Firefox“ interneto naršyklę, atidarykite „Firefox“ ir apsilankykite svetainėje, iš kurios norite išgauti duomenis. Tada tuščiame puslapio plote paspauskite dešinį pelės mygtuką (RMB) ir spustelėkite Patikrinkite elementą (Q) atidaryti „Firefox“ kūrėjo įrankis.

„Firefox“ kūrėjo įrankis turėtų būti atidaryta.

Norėdami rasti norimo tinklalapio elemento HTML vaizdą, spustelėkite Apžiūrėkite(

) piktogramą, kaip pažymėta toliau pateiktoje ekrano kopijoje.

Tada užveskite pelės žymeklį virš norimo tinklalapio elemento ir paspauskite kairįjį pelės mygtuką (LMB), kad jį pasirinktumėte.

Pasirinkto žiniatinklio elemento HTML atvaizdavimas bus paryškintas Inspektorius skirtukas „Firefox“ kūrėjo įrankis, kaip matote toliau pateiktoje ekrano kopijoje.

Norėdami gauti norimo elemento XPath parinkiklį, pasirinkite elementą iš Inspektorius skirtukas „Firefox“ kūrėjo įrankis ir dešiniuoju pelės mygtuku spustelėkite (RMB) ant jo. Tada pasirinkite Kopijuoti > XPath kaip pažymėta toliau pateiktoje ekrano kopijoje.

Jūsų norimo elemento XPath parinkiklis turėtų atrodyti maždaug taip.

Duomenų išskyrimas iš tinklalapių naudojant „XPath Selector“:

Šiame skyriuje aš jums parodysiu, kaip pasirinkti tinklalapio elementus ir iš jų išgauti duomenis naudojant „XPath“ selektorius su „Selenium Python“ biblioteka.

Pirmiausia sukurkite naują „Python“ scenarijų ex01.py ir įveskite šias kodų eilutes.

iš seleno importo žiniatinklio tvarkyklės
iš seleno.žiniatinklio tvarkyklė.paplitęs.raktai importuoja raktus
iš seleno.žiniatinklio tvarkyklė.paplitęs.importuojant Iki
parinktys = žiniatinklio tvarkyklė.„Chrome“ parinktys ()
galimybės.be galvos = Tiesa
naršyklė = žiniatinklio tvarkyklė.„Chrome“ (vykdomojo_ kelias = "./ drivers / chromedriver ",
parinktys = parinktys)
naršyklė.gauti ("https: // www.unixtimestamp.com / ")
laiko žymė = naršyklė.find_element_by_xpath ('/ html / body / div [1] / div [1]
/ div [2] / div [1] / div / div / h3 [2] ')
spausdinti ('Dabartinė laiko žymė:% s'% (laiko žymė.teksto.padalinti (") [0]))
naršyklė.Uždaryti()

Kai baigsite, išsaugokite ex01.py „Python“ scenarijus.

1-3 eilutė importuoja visus reikiamus seleno komponentus.

5 eilutė sukuria „Chrome“ parinkčių objektą, o 6 eilutė įgalina „Chrome“ žiniatinklio naršyklės režimą be galvos.

8 eilutė sukuria „Chrome“ naršyklė objektas naudojant chromedriver dvejetainis iš vairuotojai / projekto katalogas.

10 eilutė nurodo naršyklei įkelti svetainės unikalų antspaudą.com.

12 eilutėje, naudojant XPath selektorių, surandamas elementas, kuriame yra laiko žymos duomenys iš puslapio, ir jis saugomas laiko žyma kintamasis.

13 eilutė analizuoja laiko žymos duomenis iš elemento ir atspausdina juos konsolėje.

Nukopijavau pažymėtojo XPath parinkiklį h2 elementas iš unixtimestamp.com naudojant „Chrome“ kūrėjo įrankį.

14 eilutė uždaro naršyklę.

Paleiskite „Python“ scenarijų ex01.py taip:

$ python3 ex01.py

Kaip matote, laiko žymos duomenys spausdinami ekrane.

Čia aš naudojau naršyklė.find_element_by_xpath (parinkiklis) metodas. Vienintelis šio metodo parametras yra selektorius, kuris yra elemento XPath parinkiklis.

Vietoj naršyklė.find_element_by_xpath () metodą, taip pat galite naudoti naršyklė.find_element (pagal, selektorius) metodas. Šiam metodui reikia dviejų parametrų. Pirmasis parametras Iki bus Iki.XPATH kaip mes naudosime XPath selektorių ir antrąjį parametrą selektorius bus pats „XPath“ selektorius. Rezultatas bus tas pats.

Norėdami pamatyti, kaip naršyklė.find_element () metodas veikia XPath selector, sukurkite naują Python scenarijų ex02.py, nukopijuokite ir įklijuokite visas eilutes iš ex01.py į ex02.py ir pasikeisti 12 eilutė kaip pažymėta toliau pateiktoje ekrano kopijoje.

Kaip matote, „Python“ scenarijus ex02.py duoda tą patį rezultatą kaip ex01.py.

$ python3 ex02.py

The naršyklė.find_element_by_xpath () ir naršyklė.rasti_elementas () metodai naudojami norint rasti ir pasirinkti vieną elementą iš tinklalapių. Jei norite rasti ir pasirinkti kelis elementus naudodami „XPath“ selektorius, turite naudoti naršyklė.find_elements_by_xpath () arba naršyklė.find_elements () metodai.

The naršyklė.find_elements_by_xpath () metodas turi tą patį argumentą kaip ir naršyklė.find_element_by_xpath () metodas.

The naršyklė.find_elements () metodas apima tuos pačius argumentus kaip ir naršyklė.rasti_elementas () metodas.

Pažiūrėkime vardų sąrašo ištraukimo naudojant XPath selector pavyzdį iš atsitiktinių pavadinimų generatorius.info su „Selenium Python“ biblioteka.

Neužsakytas sąrašas (ol žyma) turi 10 li žymos, kurių kiekvienoje yra atsitiktinis vardas. XPath pasirinkti visus li žymos ol žyma šiuo atveju yra // * [@ id = ”main”] / div [3] / div [2] / ol // li

Peržiūrėkime kelių elementų pasirinkimo iš tinklalapio pavyzdį naudodami „XPath“ selektorius.

Sukurkite naują „Python“ scenarijų ex03.py ir įveskite joje šias kodų eilutes.

iš seleno importo žiniatinklio tvarkyklės
iš seleno.žiniatinklio tvarkyklė.paplitęs.raktai importuoja raktus
iš seleno.žiniatinklio tvarkyklė.paplitęs.importuojant Iki
parinktys = žiniatinklio tvarkyklė.„Chrome“ parinktys ()
galimybės.be galvos = Tiesa
naršyklė = žiniatinklio tvarkyklė.„Chrome“ (vykdomojo_ kelias = "./ drivers / chromedriver ",
parinktys = parinktys)
naršyklė.get ("http: // atsitiktinio pavadinimo generatorius.informacija / ")
vardai = naršyklė.find_elements_by_xpath ('
// * [@ id = "main"] / div [3] / div [2] / ol // li ')
vardui varduose:
spausdinti (pavadinimas.tekstas)
naršyklė.Uždaryti()

Kai baigsite, išsaugokite ex03.py „Python“ scenarijus.

1-8 eilutė yra tokia pati kaip ir ex01.py „Python“ scenarijus. Taigi, aš čia jų daugiau nepaaiškinsiu.

10 eilutėje nurodoma naršyklei įkelti svetainę atsitiktinių pavadinimų generatoriumi.info.

12 eilutėje parenkamas vardų sąrašas naudojant naršyklė.find_elements_by_xpath () metodas. Šis metodas naudoja XPath selektorių // * [@ id = ”main”] / div [3] / div [2] / ol // li norėdami rasti vardų sąrašą. Tada vardų sąrašas saugomas vardai kintamasis.

13 ir 14 eilutėse a dėl kilpa naudojama kartoti per vardai sąrašą ir atspausdinkite vardus konsolėje.

16 eilutė uždaro naršyklę.

Paleiskite „Python“ scenarijų ex03.py taip:

$ python3 ex03.py

Kaip matote, vardai išgaunami iš tinklalapio ir spausdinami ant konsolės.

Užuot naudoję naršyklė.find_elements_by_xpath () metodą, taip pat galite naudoti naršyklė.find_elements () metodas kaip ir anksčiau. Pirmasis šio metodo argumentas yra Iki.XPATH, o antrasis argumentas yra XPath selektorius.

Norėdami eksperimentuoti naršyklė.find_elements () metodą, sukurkite naują „Python“ scenarijų ex04.py, nukopijuokite visus kodus iš ex03.py į ex04.py, ir pakeiskite 12 eilutę, kaip pažymėta žemiau esančiame paveikslėlyje.

Turėtumėte gauti tą patį rezultatą kaip ir anksčiau.

$ python3 ex04.py

„XPath Selector“ pagrindai:

„Firefox“ arba „Google Chrome“ žiniatinklio naršyklės kūrėjų įrankis automatiškai sukuria „XPath“ parinkiklį. Tačiau šių „XPath“ parinkiklių jūsų projektui kartais nepakanka. Tokiu atveju turite žinoti, ką tam tikras „XPath“ parinkiklis daro, kad sukurtumėte savo „XPath“ selektorių. Šiame skyriuje aš jums parodysiu pagrindinius „XPath“ parinkiklius. Tada turėtumėte sugebėti susikurti savo „XPath“ parinkiklį.

Sukurkite naują katalogą www / savo projekto kataloge taip:

$ mkdir -v www

Sukurkite naują failą web01.HTML viduje konors www / katalogą ir įveskite šias failo eilutes.






Pagrindinis HTML dokumentas


Labas pasauli



Kai baigsite, išsaugokite web01.HTML failą.

Paleiskite paprastą HTTP serverį 8080 prievade naudodami šią komandą:

$ python3 -m http.serveris - katalogas www / 8080

Turėtų prasidėti HTTP serveris.

Turėtumėte turėti prieigą prie web01.HTML failas naudojant URL: http: // localhost: 8080 / web01.html, kaip matote toliau pateiktoje ekrano kopijoje.

Kol atidarytas „Firefox“ arba „Chrome“ kūrėjo įrankis, paspauskite + F kad atidarytumėte paieškos laukelį. Čia galite įvesti XPath selektorių ir pamatyti, ką jis pasirenka labai lengvai. Aš naudosiu šį įrankį šiame skyriuje.

XPath parinkiklis prasideda a pasvirasis brūkšnys (/) daugiausia laiko. Tai tarsi „Linux“ katalogų medis. The / yra visų tinklalapio elementų šaknis.

Pirmasis elementas yra HTML. Taigi, „XPath“ parinkiklis / html parenka visą HTML žyma.

Viduje HTML žymą, mes turime kūnas žyma. The kūnas žymelę galima pasirinkti naudojant XPath selektorių / html / body

The h1 antraštė yra kūnas žyma. The h1 antraštę galima pasirinkti XPath selektoriumi / html / body / h1

Šis „XPath“ selektoriaus tipas vadinamas absoliutaus kelio parinkikliu. Absoliutaus kelio parinkiklyje turite pereiti tinklalapį nuo puslapio šaknies (/). Absoliutaus kelio parinkiklio trūkumas yra tas, kad net šiek tiek pakeitus tinklalapio struktūrą jūsų XPath parinkiklis gali būti netinkamas. Šios problemos sprendimas yra santykinis arba dalinis XPath parinkiklis.

Norėdami pamatyti, kaip veikia santykinis kelias arba dalinis kelias, sukurkite naują failą web02.HTML viduje konors www / katalogą ir įveskite toliau nurodytas kodų eilutes.






Pagrindinis HTML dokumentas


Labas pasauli



tai yra pranešimas




Labas pasauli


Kai baigsite, išsaugokite web02.HTML failą ir įkelkite jį į savo interneto naršyklę.

Kaip matote, XPath parinkiklis // div / p pasirenka p žymos viduje div žyma. Tai yra santykinio XPath parinkiklio pavyzdys.

Santykinis „XPath“ parinkiklis prasideda //. Tada nurodote norimo pasirinkti elemento struktūrą. Tokiu atveju, div / p.

Taigi, // div / p reiškia pasirinkti p elementas viduje a div elementas, nesvarbu, kas ateina prieš jį.

Taip pat galite pasirinkti elementus pagal skirtingus atributus, pvz id, klasė, tipo, ir pan. naudojant XPath selektorių. Pažiūrėkime, kaip tai padaryti.

Sukurkite naują failą web03.HTML viduje konors www / katalogą ir įveskite toliau nurodytas kodų eilutes.






Pagrindinis HTML dokumentas


Labas pasauli



tai yra pranešimas


tai dar viena žinutė


2 antraštė


Lorem ipsum dolor sit amet consectetur, adipisicing elit. Kvibusdamas
tinkamas doloribus sapiente, molestias quos quae non nam incidunt quis delectus
facilis magni officiis alias neque atque fuga? Unde, aut natus?




tai poraštė


Kai baigsite, išsaugokite web03.HTML failą ir įkelkite jį į savo interneto naršyklę.

Tarkime, kad norite pasirinkti visus div elementai, turintys klasė vardas konteineris1. Norėdami tai padaryti, galite naudoti XPath selektorių // div [@ class = 'container1']

Kaip matote, turiu 2 elementus, kurie atitinka „XPath“ parinkiklį // div [@ class = 'container1']

Norėdami pasirinkti pirmąjį div elementas su klasė vardas konteineris1, papildyti [1] „XPath“ pabaigoje pasirinkite, kaip parodyta žemiau esančiame paveikslėlyje.

Tuo pačiu būdu galite pasirinkti antrą div elementas su klasė vardas konteineris1 naudojant XPath selektorių // div [@ class = 'container1'] [2]

Elementus galite pasirinkti pagal id taip pat.

Pavyzdžiui, norėdami pasirinkti elementą, kuris turi id apie poraštė-pranešimas, galite naudoti „XPath“ selektorių // * [@ id = 'footer-msg']

Čia, * prieš tai [@ id = 'footer-msg'] yra naudojamas pasirinkti bet kurį elementą, neatsižvelgiant į jų žymą.

Tai yra „XPath“ selektoriaus pagrindai. Dabar turėtumėte sugebėti sukurti savo „XPath“ selektorių savo „Selenium“ projektams.

Išvada:

Šiame straipsnyje aš parodžiau, kaip rasti ir pasirinkti elementus iš tinklalapių naudojant „XPath“ selektorių su „Selenium Python“ biblioteka. Taip pat aptariau dažniausiai pasitaikančius „XPath“ parinkiklius. Perskaitę šį straipsnį, turėtumėte jaustis gana užtikrintai, pasirinkdami elementus iš tinklalapių naudodami „XPath“ selektorių su „Selenium Python“ biblioteka.

5 geriausi „Arcade“ žaidimai, skirti „Linux“
Šiais laikais kompiuteriai yra rimta mašina, naudojama žaidimams. Jei negalėsite gauti naujo aukšto rezultato, žinosite, ką noriu pasakyti. Šiame įraš...
Mūšis už Wesnothą 1.13.6 Išleista plėtra
Mūšis už Wesnothą 1.13.6 išleistas praėjusį mėnesį, yra šeštasis 1 versijos kūrimo leidimas.13.„x“ serija ir ji teikia daug patobulinimų, ypač vartoto...
Kaip įdiegti „League of Legends“ „Ubuntu 14“.04
Jei esate „League of Legends“ gerbėjas, tai jums yra galimybė išbandyti „League of Legends“. Atminkite, kad LOL palaikoma „PlayOnLinux“, jei esate „Li...