Kaip rasti elementą pagal tekstą naudojant seleną

How Find Element Text With Selenium



Tinklalapio elementų radimas ir pasirinkimas yra raktas į žiniatinklio grandymą naudojant seleną. „Selenium“ galite pasirinkti elementus naudodami žymos pavadinimą, ID, klasės pavadinimą, „XPath“ parinkiklį, CSS parinkiklį ir kt. Taip pat galite pasirinkti elementus, turinčius konkretų tekstą, naudodami seleną. Tai naudinga norint lengvai pasirinkti nuorodas ir mygtukus iš tinklalapio. Net jei pasikeičia puslapio struktūra, tol, kol tinklalapio elemento tekstas išlieka tas pats, jūsų parinkiklis turėtų veikti puikiai. Tai yra seleno teksto pasirinkimo nuorodų ir mygtukų pranašumas.

Šiame straipsnyje aš jums parodysiu, kaip rasti ir pasirinkti elementus iš tinklalapių, naudojant tekstą seleno su seleno python biblioteka. Taigi, pradėkime.







Būtinos sąlygos:

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



  1. Jūsų kompiuteryje įdiegtas „Linux“ platinimas (pageidautina „Ubuntu“).
  2. Python 3 įdiegta jūsų kompiuteryje.
  3. PIP 3 įdiegta jūsų kompiuteryje.
  4. Python virtualenv paketą, įdiegtą jūsų kompiuteryje.
  5. „Mozilla Firefox“ arba „Google Chrome“ žiniatinklio naršyklės, įdiegtos jūsų kompiuteryje.
  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“ .



Galite rasti daug straipsnių kitomis temomis LinuxHint.com . Būtinai patikrinkite juos, jei jums reikia pagalbos.





Projekto katalogo nustatymas:

Norėdami viską sutvarkyti, sukurkite naują projektų katalogą seleno teksto pasirinkimas/ taip:

$mkdir -pvseleno teksto pasirinkimas/vairuotojų



Eikite į seleno teksto pasirinkimas/ projekto katalogas:

$CDseleno teksto pasirinkimas/

Sukurkite „Python“ virtualią aplinką projekto kataloge taip:

$virtualenv .venv

Suaktyvinkite virtualią aplinką taip:

$šaltinis.venv/esu/aktyvuoti

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

$ pip3 įdiegti seleną

Atsisiųskite ir įdiekite visas reikalingas interneto tvarkykles vairuotojai/ projekto katalogas. Savo straipsnyje aprašiau žiniatinklio tvarkyklių atsisiuntimo ir diegimo procesą Įvadas į seleną „Python 3“ .

Elementų paieška pagal tekstą:

Šiame skyriuje parodysiu keletą pavyzdžių, kaip rasti ir pasirinkti tinklalapio elementus pagal tekstą naudojant „Selenium Python“ biblioteką.

Pradėsiu nuo paprasčiausio tinklalapio elementų pasirinkimo tekstu pavyzdžio, nuorodų pasirinkimo iš tinklalapio.

„Facebook“ prisijungimo puslapyje turime nuorodą Pamiršote paskyrą? Kaip matote žemiau esančioje ekrano kopijoje. Pasirinkite šią nuorodą su selenu.

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

nuoselenasimportasinterneto tvarkyklę
nuoselenas.interneto tvarkyklę.dažnas.raktai importasRaktai
nuoselenas.interneto tvarkyklę.dažnas.pagal importasIki
nuo laikas importasmiegoti
naršyklė=interneto tvarkyklę.„Chrome“(vykdomasis_ kelias='./drivers/chromedriver')
naršyklė.gauti(„https://www.facebook.com/“)
forgotAccountLink=naršyklė.rasti_elementą(Iki.XPATH, '
//*[text () = 'Pamiršote paskyrą?'] '
)
forgotAccountLink.send_keys(Raktai.Įveskite)

Baigę išsaugokite ex01.py „Python“ scenarijus.

1-4 eilutė importuoja visus reikalingus komponentus į „Python“ programą.

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

8 eilutė liepia naršyklei įkelti svetainę facebook.com.

10 eilutėje randama nuoroda, kurioje yra tekstas Pamiršote paskyrą? Naudojant XPath selektorių. Tam naudoju XPath selektorių //*[text () = ’Pamiršote paskyrą?’] .

„XPath“ parinkiklis prasideda simboliu //, tai reiškia, kad elementas gali būti bet kurioje puslapio vietoje. The * simbolis liepia Selenui pasirinkti bet kurią žymą ( į arba p arba span, ir tt), atitinkanti laužtinių skliaustų būklę [] . Čia sąlyga yra tai, kad elemento tekstas yra lygus Pamiršote paskyrą?

The tekstas () Funkcija XPath naudojama norint gauti elemento tekstą.

Pavyzdžiui, tekstas () grįžta Labas pasauli jei jis pasirenka šį HTML elementą.

< į href=„http://dummysite.com“>Labas pasauli</ į >

11 eilutė siunčia paspauskite klavišą prie Pamiršote paskyrą? Nuoroda.

Paleiskite „Python“ scenarijų ex01.py su tokia komanda:

$ python ex01.py

Kaip matote, žiniatinklio naršyklė suranda, pasirenka ir paspaudžia klavišą ant Pamiršote paskyrą? Nuoroda.

The Pamiršote paskyrą? Nuoroda nukreipia naršyklę į kitą puslapį.

Taip pat galite lengvai ieškoti elementų, turinčių norimą atributo vertę.

Čia, Prisijungti mygtukas yra įvesties elementas, kuris turi vertės atributas Prisijungti . Pažiūrėkime, kaip pasirinkti šį elementą pagal tekstą.

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

nuoselenasimportasinterneto tvarkyklę
nuoselenas.interneto tvarkyklę.dažnas.raktai importasRaktai
nuoselenas.interneto tvarkyklę.dažnas.pagal importasIki
nuo laikas importasmiegoti
naršyklė=interneto tvarkyklę.„Chrome“(vykdomasis_ kelias='./drivers/chromedriver')
naršyklė.gauti(„https://www.facebook.com/“)
miegoti(5)
emailInput=naršyklė.rasti_elementą(Iki.XPATH, '// įvestis [@id =' email ']')
passwordInput=naršyklė.rasti_elementą(Iki.XPATH, '// įvestis [@id =' pass ']')
loginButton=naršyklė.rasti_elementą(Iki.XPATH, '//*[@value =' Prisijungti ']')
emailInput.send_keys('[apsaugotas el. paštas]')
miegoti(5)
passwordInput.send_keys('slaptas leidimas')
miegoti(5)
loginButton.send_keys(Raktai.Įveskite)

Baigę išsaugokite ex02.py „Python“ scenarijus.

1-4 eilutė importuoja visus reikalingus komponentus.

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

8 eilutė liepia naršyklei įkelti svetainę facebook.com.

Viskas vyksta taip greitai, kai paleidi scenarijų. Taigi, aš naudojau miegoti () veikia daug kartų ex02.py už naršyklės komandų uždelsimą. Tokiu būdu galite stebėti, kaip viskas veikia.

11 eilutėje randamas el. Pašto įvesties teksto laukelis ir saugoma elemento nuoroda emailInput kintamasis.

12 eilutėje randamas el. Pašto įvesties teksto laukelis ir saugoma elemento nuoroda emailInput kintamasis.

13 eilutėje randamas įvesties elementas, turintis atributą vertės apie Prisijungti naudojant XPath selektorių. Tam naudoju XPath selektorių //*[@value = ’Prisijungti’] .

„XPath“ parinkiklis prasideda simboliu // . Tai reiškia, kad elementas gali būti bet kurioje puslapio vietoje. The * simbolis liepia Selenui pasirinkti bet kurią žymą ( įvesties arba p arba span, ir tt), atitinkanti laužtinių skliaustų būklę [] . Čia sąlyga yra elemento atributas vertės yra lygus Prisijungti .

15 eilutė siunčia įvestį[apsaugotas el. paštas]į el. pašto įvesties teksto laukelį, o 16 eilutė vėluoja kitą operaciją.

18 eilutė siunčia įvesties slaptą leidimą į slaptažodžio įvedimo teksto laukelį, o 19 eilutė vėluoja kitą operaciją.

21 eilutė siunčia paspauskite prisijungimo mygtuką.

Paleiskite ex02.py „Python“ scenarijus su tokia komanda:

$ python3 ex02.py

Kaip matote, el. Pašto ir slaptažodžio teksto laukeliai užpildyti mūsų netikromis reikšmėmis ir Prisijungti paspaudžiamas mygtukas.

Tada puslapis pereina į kitą puslapį.

Elementų paieška pagal dalinį tekstą:

Ankstesniame skyriuje parodžiau, kaip rasti elementus pagal konkretų tekstą. Šiame skyriuje aš jums parodysiu, kaip rasti elementus iš tinklalapių naudojant dalinį tekstą.

Pavyzdyje ex01.py , Ieškojau nuorodos elemento, kuriame yra tekstas Pamiršote paskyrą? . To paties nuorodos elemento galite ieškoti naudodami dalinį tekstą, pvz Pamiršta acc . Norėdami tai padaryti, galite naudoti yra () „XPath“ funkcija, kaip parodyta 10 eilutėje ex03.py . Likę kodai yra tokie patys kaip ir ex01.py . Rezultatai bus tokie patys.

10 eilutėje ex03.py , pasirinkta sąlyga yra (šaltinis, tekstas) „XPath“ funkcija. Ši funkcija apima 2 argumentus, šaltinis, ir tekstas .

The yra () funkcija patikrina, ar tekstas pateiktas antrajame argumente iš dalies atitinka šaltinis vertė pirmame argumente.

Šaltinis gali būti elemento tekstas ( tekstas () ) arba elemento atributo reikšmė ( @attr_name ).

In ex03.py , elemento tekstas yra tikrinamas.

Kita naudinga „XPath“ funkcija, skirta rasti elementus iš tinklalapio naudojant dalinį tekstą prasideda nuo (šaltinis, tekstas) . Ši funkcija turi tuos pačius argumentus kaip ir yra () funkcija ir naudojama taip pat. Skirtumas tik tas, kad prasideda su() funkcija patikrina, ar antrasis argumentas tekstas yra pirmojo argumento eilutė šaltinis .

Aš perrašiau pavyzdį ex03.py ieškoti elemento, su kuriuo prasideda tekstas Pamiršta, kaip matote 10 eilutėje ex04.py . Rezultatas toks pat kaip ir ex02 ir ex03.py .

Aš taip pat perrašiau ex02.py kad jis ieškotų įvesties elemento, kuriam vertės atributas prasideda Žurnalas, kaip matote 13 eilutėje ex05.py . Rezultatas toks pat kaip ir ex02.py .

Išvada:

Šiame straipsnyje aš jums parodžiau, kaip rasti ir pasirinkti elementus iš tinklalapių pagal tekstą naudojant „Selenium Python“ biblioteką. Dabar, naudodami „Selenium Python“ biblioteką, turėtumėte rasti tinklalapių elementus pagal konkretų tekstą arba dalinį tekstą.