Hogyan keressük meg az elemet szöveg szerint a szelénnel

How Find Element Text With Selenium



Az elemek megkeresése és kiválasztása a weboldalról a kulcs a szelénnel végzett webkaparáshoz. Az elemeket a Selenium címke neve, azonosítója, osztályneve, XPath választó, CSS választó stb. Segítségével választhatja ki. A szelénnel olyan szöveget tartalmazó elemeket is kiválaszthat. Ez segít a linkek és gombok egyszerű kiválasztásában a weboldalon. Még akkor is, ha az oldal szerkezete megváltozik, amíg a weboldal elem szövege változatlan marad, a választónak tökéletesen kell működnie. Ez az előnye annak, hogy a linkeket és gombokat a szelénben lévő szöveg segítségével választja ki.

Ebben a cikkben megmutatom, hogyan lehet megtalálni és kiválasztani a weboldalak elemeit a Selenium szöveg segítségével a Selenium python könyvtárral. Szóval, kezdjük.







Feltételek:

A cikk parancsainak és példáinak kipróbálásához a következőkre van szüksége:



  1. Egy Linux disztribúció (lehetőleg Ubuntu) telepítve a számítógépére.
  2. Python 3 telepítve a számítógépre.
  3. PIP 3 telepítve van a számítógépre.
  4. Piton virtualenv csomag telepítve van a számítógépére.
  5. Mozilla Firefox vagy Google Chrome webböngészők telepítve a számítógépre.
  6. Tudnia kell, hogyan kell telepíteni a Firefox Gecko illesztőprogramot vagy a Chrome webes illesztőprogramot.

A 4., 5. és 6. követelmény teljesítéséhez olvassa el cikkemet Bevezetés a szelénbe a Python 3 -ban .



A többi témában számos cikket talál LinuxHint.com . Feltétlenül nézze meg őket, ha segítségre van szüksége.





Projektkönyvtár beállítása:

Ha mindent rendben szeretne tartani, hozzon létre egy új projektkönyvtárat selenium-text-select/ alábbiak szerint:

$mkdir -pvselenium-text-select/sofőrök



Navigáljon a selenium-text-select/ projektkönyvtár az alábbiak szerint:

$CDselenium-text-select/

Hozzon létre egy Python virtuális környezetet a projektkönyvtárban az alábbiak szerint:

$virtualenv .venv

Aktiválja a virtuális környezetet az alábbiak szerint:

$forrás.venv/am/aktiválja

Telepítse a Selenium Python könyvtárat a PIP3 használatával az alábbiak szerint:

$ pip3 telepítse a szelént

Töltse le és telepítse az összes szükséges webes illesztőprogramot a sofőrök/ projekt könyvtára. Cikkemben elmagyaráztam a webes illesztőprogramok letöltésének és telepítésének folyamatát Bevezetés a szelénbe a Python 3 -ban .

Elemek keresése szöveg szerint:

Ebben a részben néhány példát mutatok be a weblap elemeinek szöveg szerinti megkeresésére és kiválasztására a Selenium Python könyvtár segítségével.

A legegyszerűbb példával fogom kezdeni a weblap elemeinek szöveg szerinti kiválasztását, a linkek kiválasztását a weboldalról.

A facebook.com bejelentkezési oldalán van egy link Elfelejtett fiók? Amint az alábbi képernyőképen látható. Válasszuk ki ezt a linket a szelénnel.

Hozzon létre egy új Python -szkriptet ex01.py és írja be a következő kódsorokat.

tól tőlszelénimportwebmeghajtó
tól tőlszelén.webmeghajtó.gyakori.kulcsok importKulcsok
tól tőlszelén.webmeghajtó.gyakori.által importÁltal
tól től idő importalvás
böngésző=webmeghajtó.Króm(futtatható_útvonal='./drivers/chromedriver')
böngésző.kap('https://www.facebook.com/')
forgotAccountLink=böngésző.find_element(Által.XPATH, '
//*[text () = 'Elfelejtett fiók?'] '
)
forgotAccountLink.send_keys(Kulcsok.BELÉP)

Ha elkészült, mentse a ex01.py Python szkript.

Az 1-4. Sor importálja az összes szükséges összetevőt a Python programba.

A 6. sor létrehoz egy Chrome -ot böngésző objektumot a chromedriver bináris a sofőrök/ projekt könyvtára.

A 8. sor azt mondja a böngészőnek, hogy töltse be a facebook.com webhelyet.

A 10. sor megtalálja a szöveget tartalmazó linket Elfelejtett fiók? Az XPath választó használata. Ehhez az XPath választót használtam //*[text () = ’Elfelejtett fiók?’] .

Az XPath választógomb a következővel kezdődik //, ami azt jelenti, hogy az elem bárhol lehet az oldalon. Az * szimbólum azt mondja a szelénnek, hogy válasszon ki egy címkét ( nak nek vagy o vagy span, stb.), amely megfelel a szögletes zárójelben lévő feltételeknek [] . Itt a feltétel az, hogy az elem szövege egyenlő a Elfelejtett fiók?

Az szöveg() Az XPath függvény az elem szövegének lekérésére szolgál.

Például, szöveg() visszatér Helló Világ ha a következő HTML elemet választja ki.

< nak nek href='http://dummysite.com'>Helló Világ</ nak nek >

A 11. sor elküldi a nyomja meg a gombot Elfelejtett fiók? Link.

Futtassa a Python szkriptet ex01.py a következő paranccsal:

$ python ex01.py

Amint láthatja, a webböngésző megkeresi, kiválasztja és megnyomja a gombot gombot a Elfelejtett fiók? Link.

Az Elfelejtett fiók? A link a következő oldalra viszi a böngészőt.

Hasonló módon könnyen kereshet olyan elemeket, amelyek rendelkeznek a kívánt attribútumértékkel.

Itt, a Belépés gomb egy bemenet elem, amely rendelkezik a érték tulajdonság Belépés . Nézzük meg, hogyan válasszuk ki ezt az elemet szöveg szerint.

Hozzon létre egy új Python -szkriptet ex02.py és írja be a következő kódsorokat.

tól tőlszelénimportwebmeghajtó
tól tőlszelén.webmeghajtó.gyakori.kulcsok importKulcsok
tól tőlszelén.webmeghajtó.gyakori.által importÁltal
tól től idő importalvás
böngésző=webmeghajtó.Króm(futtatható_útvonal='./drivers/chromedriver')
böngésző.kap('https://www.facebook.com/')
alvás(5)
emailInput=böngésző.find_element(Által.XPATH, '// input [@id =' email ']')
passwordInput=böngésző.find_element(Által.XPATH, '// input [@id =' pass ']')
loginButton=böngésző.find_element(Által.XPATH, '//*[@value =' Bejelentkezés ']')
emailInput.send_keys('[email protected]')
alvás(5)
passwordInput.send_keys('titkos belépő')
alvás(5)
loginButton.send_keys(Kulcsok.BELÉP)

Ha elkészült, mentse a ex02.py Python szkript.

Az 1-4. Sor importálja az összes szükséges összetevőt.

A 6. sor létrehoz egy Chrome -ot böngésző objektumot a chromedriver bináris a sofőrök/ projekt könyvtára.

A 8. sor azt mondja a böngészőnek, hogy töltse be a facebook.com webhelyet.

A forgatókönyv futtatása után minden olyan gyorsan történik. Szóval, használtam a alvás() sokszor működnek benne ex02.py a böngészőparancsok késleltetésére. Így megfigyelheti, hogyan működik minden.

A 11. sor megtalálja az e -mail beviteli szövegmezőt, és tárolja az elem hivatkozását a emailInput változó.

A 12. sor megtalálja az e -mail beviteli szövegmezőt, és tárolja az elem hivatkozását a emailInput változó.

A 13. sor megtalálja az attribútummal rendelkező bemeneti elemet érték nak,-nek Belépés XPath választó segítségével. Ehhez az XPath választót használtam //*[@value = ’Bejelentkezés’] .

Az XPath választógomb a következővel kezdődik // . Ez azt jelenti, hogy az elem bárhol lehet az oldalon. Az * szimbólum azt mondja a szelénnek, hogy válasszon ki egy címkét ( bemenet vagy o vagy span, stb.), amely megfelel a szögletes zárójelben lévő feltételeknek [] . Itt a feltétel az elem attribútum érték egyenlő Belépés .

A 15. sor a bemenetet küldi[e -mail védett]az e -mail beviteli szövegmezőbe, és a 16. sor késlelteti a következő műveletet.

A 18. sor elküldi a titkos bemenetet a jelszóbeviteli szövegmezőbe, a 19. sor pedig késlelteti a következő műveletet.

A 21. sor elküldi a nyomja meg a gombot a bejelentkezési gombra.

Futtassa a ex02.py Python szkript a következő paranccsal:

$ python3 ex02.py

Amint láthatja, az e -mail és a jelszó szövegdobozok tele vannak dummy értékeinkkel, és a Belépés gombot megnyomják.

Ezután az oldal a következő oldalra navigál.

Elemek keresése részszöveg alapján:

Az előző részben megmutattam, hogyan találhat meg elemeket adott szöveg alapján. Ebben a szakaszban megmutatom, hogyan találhat meg elemeket weboldalakról részszöveg használatával.

A példában ex01.py , Megkerestem a linket, amely tartalmazza a szöveget Elfelejtett fiók? . Ugyanazon hivatkozási elemben kereshet részszöveget, például Elfelejtett acc . Ehhez használhatja a tartalmaz () XPath függvény, a 10. sorban látható módon ex03.py . A többi kód ugyanaz, mint a ex01.py . Az eredmények ugyanazok lesznek.

A 10. sorban ex03.py , a kiválasztási feltétel a tartalmaz (forrás, szöveg) XPath funkció. Ez a függvény 2 argumentumot tartalmaz, forrás, és szöveg .

Az tartalmaz () funkció ellenőrzi, hogy a szöveg a második érvben megadott részben megfelel az forrás érték az első argumentumban.

A forrás lehet az elem szövege ( szöveg() ) vagy az elem attribútumértékét ( @attr_name ).

Ban ben ex03.py , az elem szövege be van jelölve.

Egy másik hasznos XPath funkció, amely részleges szöveg használatával megkeresi a weboldal elemeit kezdődik (forrás, szöveg) . Ennek a függvénynek ugyanazok az érvei, mint a tartalmaz () funkciót és ugyanúgy használják. Az egyetlen különbség az, hogy a (-vel kezdődik) függvény ellenőrzi, hogy a második argumentum szöveg az első argumentum kezdő karaktere forrás .

Átírtam a példát ex03.py megkeresni azt az elemet, amellyel a szöveg kezdődik Elfelejtett, amint azt a 10. sorban láthatja ex04.py . Az eredmény ugyanaz, mint a ex02 és ex03.py .

Én is átírtam ex02.py így megkeresi azt a bemeneti elemet, amelyhez a érték attribútum azzal kezdődik Napló, mint a 13. sorában látható ex05.py . Az eredmény ugyanaz, mint a ex02.py .

Következtetés:

Ebben a cikkben a Selenium Python könyvtárral mutattam meg, hogyan lehet szövegesen megkeresni és kiválasztani a weboldalak elemeit. Most a Selenium Python könyvtárral meg kell találnia a weboldalak elemeit meghatározott szöveg vagy részszöveg alapján.