Ako nájsť prvok podľa textu pomocou selénu

How Find Element Text With Selenium



Umiestnenie a výber prvkov z webovej stránky je kľúčom k zoškrabaniu webu pomocou selénu. V Selenium môžete vyberať prvky pomocou názvu značky, ID, názvu triedy, selektora XPath, selektora CSS atď. Pomocou selénu môžete tiež vybrať prvky, ktoré majú konkrétny text. To je užitočné pre ľahký výber odkazov a tlačidiel z webovej stránky. Aj keď sa zmení štruktúra stránky, pokiaľ bude text prvku webovej stránky rovnaký, váš volič by mal fungovať dobre. Toto je výhoda výberu odkazov a tlačidiel pomocou textu v seléne.

V tomto článku vám ukážem, ako vyhľadávať a vyberať prvky z webových stránok pomocou textu v seléne s knižnicou Selenium python. Začnime teda.







Predpoklady:

Na vyskúšanie príkazov a príkladov tohto článku musíte mať:



  1. Vo vašom počítači je nainštalovaná distribúcia Linuxu (najlepšie Ubuntu).
  2. Na vašom počítači je nainštalovaný Python 3.
  3. PIP 3 nainštalovaný vo vašom počítači.
  4. Python virtualenv balík nainštalovaný vo vašom počítači.
  5. Vo vašom počítači sú nainštalované webové prehliadače Mozilla Firefox alebo Google Chrome.
  6. Musíte vedieť, ako nainštalovať ovládač Firefox Gecko alebo Chrome Web Driver.

Ak chcete splniť požiadavky 4, 5 a 6, prečítajte si môj článok Úvod do selénu v Pythone 3 .



Môžete nájsť mnoho článkov na ďalšie témy LinuxHint.com . Nezabudnite ich skontrolovať, ak potrebujete pomoc.





Nastavenie adresára projektu:

Aby bolo všetko organizované, vytvorte nový adresár projektu selén-text-select/ nasledovne:

$mkdir -pvselén-text-select/vodiči



Prejdite na selén-text-select/ adresár projektu takto:

$CDselén-text-select/

Vytvorte virtuálne prostredie Python v adresári projektu nasledovne:

$virtualenv .venv

Virtuálne prostredie aktivujte nasledovne:

$zdroj.venv/dopoludnia/Aktivovať

Nainštalujte knižnicu Selenium Python pomocou PIP3 nasledovne:

$ pip3 nainštalujte selén

Stiahnite a nainštalujte si požadovaný webový ovládač do súboru vodiči/ adresár projektu. V článku som vysvetlil proces sťahovania a inštalácie webových ovládačov Úvod do selénu v Pythone 3 .

Hľadanie prvkov podľa textu:

V tejto časti vám ukážem niekoľko príkladov hľadania a výberu prvkov webových stránok podľa textu v knižnici Selenium Python.

Začnem najjednoduchším príkladom výberu prvkov webovej stránky pomocou textu a výberu odkazov z webovej stránky.

Na prihlasovacej stránke facebook.com máme odkaz Zabudnutý účet? Ako vidíte na obrázku nižšie. Vyberme toto prepojenie so selénom.

Vytvorte nový skript Python ex01.py a zadajte doň nasledujúce riadky kódov.

odselénimportwebdriver
odselén.webdriver.spoločný.kľúče importKľúče
odselén.webdriver.spoločný.od importOd
od čas importspať
prehliadač=webdriver.Chrome(spustiteľná_cesta=„./drivers/chromedriver“)
prehliadač.dostať(„https://www.facebook.com/“)
zabudolAccountLink=prehliadač.find_element(Od.XPATH, '
//*[text () = 'Zabudnutý účet?'] '
)
zabudolAccountLink.send_keys(KľúčeVSTÚPIŤ)

Keď skončíte, uložte súbor ex01.py Skript Python.

Riadok 1-4 importuje všetky požadované súčasti do programu Python.

Riadok 6 vytvára prehliadač Chrome prehliadač objekt pomocou chromedriver binárne z vodiči/ adresár projektu.

Riadok 8 hovorí prehliadaču, aby načítal webovú stránku facebook.com.

Riadok 10 nájde odkaz s textom Zabudnutý účet? Použitie selektora XPath. Na to som použil volič XPath //*[text () = ‘Zabudnutý účet?‘] .

Volič XPath začína na //, čo znamená, že prvok môže byť kdekoľvek na stránke. The * symbol informuje Selenium, aby vybral ľubovoľnú značku ( do alebo p alebo rozpätie, atď.), ktoré zodpovedajú stavu v hranatých zátvorkách [] . Tu je podmienkou, aby sa text prvku rovnal Zabudnutý účet?

The text () Na získanie textu prvku sa používa funkcia XPath.

Napríklad, text () vracia Ahoj Svet ak vyberie nasledujúci prvok HTML.

< do href=„http://dummysite.com“>Ahoj Svet</ do >

Riadok 11 odosiela stlačením klávesu na Zabudnutý účet? Odkaz.

Spustite skript Python ex01.py s nasledujúcim príkazom:

$ python ex01.py

Ako vidíte, webový prehliadač vyhľadá, vyberie a stlačí kľúč na Zabudnutý účet? Odkaz.

The Zabudnutý účet? Odkaz presmeruje prehliadač na nasledujúcu stránku.

Rovnakým spôsobom môžete ľahko vyhľadávať prvky, ktoré majú požadovanú hodnotu atribútu.

Tu, Prihlásiť sa tlačidlo je vstup prvok, ktorý má hodnotu atribút Prihlásiť sa . Pozrime sa, ako vybrať tento prvok podľa textu.

Vytvorte nový skript Python ex02.py a zadajte doň nasledujúce riadky kódov.

odselénimportwebdriver
odselén.webdriver.spoločný.kľúče importKľúče
odselén.webdriver.spoločný.od importOd
od čas importspať
prehliadač=webdriver.Chrome(spustiteľná_cesta=„./drivers/chromedriver“)
prehliadač.dostať(„https://www.facebook.com/“)
spať(5)
emailInput=prehliadač.find_element(Od.XPATH, '// vstup [@id =' email ']')
hesloVstup=prehliadač.find_element(Od.XPATH, '// input [@id =' pass ']')
prihlasovacie tlačidlo=prehliadač.find_element(Od.XPATH, '//*[@value =' Prihlásiť sa ']')
emailInput.send_keys('[email protected]')
spať(5)
hesloVstup.send_keys(„tajný priechod“)
spať(5)
prihlasovacie tlačidlo.send_keys(KľúčeVSTÚPIŤ)

Keď skončíte, uložte súbor ex02.py Skript Python.

Riadok 1-4 importuje všetky požadované súčasti.

Riadok 6 vytvára prehliadač Chrome prehliadač objekt pomocou chromedriver binárne z vodiči/ adresár projektu.

Riadok 8 hovorí prehliadaču, aby načítal webovú stránku facebook.com.

Po spustení skriptu sa všetko stane tak rýchlo. Použil som teda spať () fungovať mnohokrát v ex02.py na oneskorenie príkazov prehliadača. Takýmto spôsobom môžete sledovať, ako všetko funguje.

Riadok 11 nájde textové pole na zadanie e -mailu a uloží referenciu na prvok do súboru emailInput premenná.

Riadok 12 nájde textové pole na zadanie e -mailu a uloží referenciu na prvok do súboru emailInput premenná.

Riadok 13 vyhľadá vstupný prvok, ktorý má atribút hodnotu z Prihlásiť sa pomocou voliča XPath. Na to som použil volič XPath //*[@value = 'Prihlásiť sa'] .

Volič XPath začína na // . To znamená, že prvok môže byť kdekoľvek na stránke. The * symbol informuje Selenium, aby vybral ľubovoľnú značku ( vstup alebo p alebo rozpätie, atď.), ktoré zodpovedajú stavu v hranatých zátvorkách [] . Tu je podmienkou atribút prvku hodnotu rovná sa Prihlásiť sa .

Riadok 15 odosiela vstup[chránené e -mailom]do textového poľa na zadanie e -mailu a riadok 16 oneskorí ďalšiu operáciu.

Riadok 18 odošle vstupný tajný prístup do textového poľa na zadanie hesla a riadok 19 oneskorí ďalšiu operáciu.

Riadok 21 odosiela stlačením klávesu sa prihlásite.

Spustite súbor ex02.py Skript Python s nasledujúcim príkazom:

$ python3 ex02.py

Ako vidíte, textové polia e -mailu a hesla sú naplnené našimi falošnými hodnotami a Prihlásiť sa je stlačené tlačidlo.

Potom stránka prejde na nasledujúcu stránku.

Hľadanie prvkov podľa čiastočného textu:

V predchádzajúcej časti som vám ukázal, ako nájsť prvky podľa konkrétneho textu. V tejto časti vám ukážem, ako nájsť prvky z webových stránok pomocou čiastočného textu.

V príklade ex01.py Hľadal som prvok odkazu, ktorý má text Zabudnutý účet? . Rovnaký prvok odkazu môžete vyhľadávať pomocou čiastočného textu, ako napríklad Zabudnuté prísl . Na to môžete použiť obsahuje () Funkcia XPath, ako je uvedené v riadku 10 ex03.py . Ostatné kódy sú rovnaké ako v ex01.py . Výsledky budú rovnaké.

V riadku 10 z ex03.py , použila sa podmienka výberu obsahuje (zdroj, text) Funkcia XPath. Táto funkcia má 2 argumenty, zdroj, a text .

The obsahuje () funkcia kontroluje, či text uvedený v druhom argumente sa čiastočne zhoduje s zdroj hodnota v prvom argumente.

Zdrojom môže byť text prvku ( text () ) alebo hodnotu atribútu prvku ( @attr_name ).

V ex03.py , skontroluje sa text prvku.

Ďalšou užitočnou funkciou XPath na nájdenie prvkov z webovej stránky pomocou čiastočného textu je začína na (zdroj, text) . Táto funkcia má rovnaké argumenty ako obsahuje () funkciu a používa sa rovnakým spôsobom. Jediným rozdielom je, že začína s() funkcia kontroluje, či je druhý argument text je počiatočný reťazec prvého argumentu zdroj .

Prepísal som príklad ex03.py na vyhľadanie prvku, pre ktorý text začína Zabudnutý, ako môžete vidieť v riadku 10 z ex04.py . Výsledok je rovnaký ako v ex02 a ex03.py .

Tiež som prepísal ex02.py tak, že hľadá vstupný prvok, pre ktorý hodnotu atribút začína na Denník, ako môžete vidieť v riadku 13 z ex05.py . Výsledok je rovnaký ako v ex02.py .

Záver:

V tomto článku som vám ukázal, ako pomocou knižnice Selenium Python vyhľadávať a vyberať prvky z webových stránok pomocou textu. Teraz by ste mali byť schopní nájsť prvky z webových stránok podľa konkrétneho textu alebo čiastočného textu v knižnici Selenium Python.