Kako najti element z besedilom s selenom

How Find Element Text With Selenium



Iskanje in izbira elementov s spletne strani je ključ do strganja po spletu s Selenom. Elemente lahko izberete z imenom oznake, ID -jem, imenom razreda, izbirnikom XPath, izbirnikom CSS itd. S selenom lahko izberete tudi elemente, ki imajo določeno besedilo. To je v pomoč pri enostavnem izbiranju povezav in gumbov s spletne strani. Tudi če se struktura strani spremeni, dokler je besedilo elementa spletne strani enako, bi moral biti vaš izbirnik v redu. To je prednost izbire povezav in gumbov z uporabo besedila v Selenium.

V tem članku vam bom pokazal, kako poiščete in izberete elemente s spletnih strani z uporabo besedila v Selenium s knjižnico Selenium python. Torej, začnimo.







Predpogoji:

Če želite preizkusiti ukaze in primere tega članka, morate imeti:



  1. Distribucija Linuxa (po možnosti Ubuntu), nameščena v vašem računalniku.
  2. Python 3 je nameščen v računalniku.
  3. PIP 3 je nameščen na vašem računalniku.
  4. Python virtualenv paket, nameščen v računalniku.
  5. Spletni brskalniki Mozilla Firefox ali Google Chrome, nameščeni v vašem računalniku.
  6. Morate vedeti, kako namestiti gonilnik Firefox Gecko ali spletni gonilnik Chrome.

Če želite izpolniti zahteve 4, 5 in 6, preberite moj članek Uvod v selen v Pythonu 3 .



Tu lahko najdete veliko člankov o drugih temah LinuxHint.com . Če potrebujete pomoč, jih obvezno preverite.





Nastavitev imenika projekta:

Če želite, da je vse organizirano, ustvarite nov imenik projektov selenium-text-select/ kot sledi:

$mkdir -pvselenium-text-select/vozniki



Pomaknite se do selenium-text-select/ imenik projekta, kot sledi:

$CDselenium-text-select/

Ustvarite navidezno okolje Python v imeniku projekta na naslednji način:

$virtualenv .venv

Navidezno okolje aktivirajte na naslednji način:

$vir.venv/zjutraj/aktivirati

Knjižnico Selenium Python namestite s PIP3 na naslednji način:

$ pip3 namestite selen

Prenesite in namestite ves zahtevani spletni gonilnik v vozniki/ imenik projekta. Postopek prenosa in namestitve spletnih gonilnikov sem razložil v svojem članku Uvod v selen v Pythonu 3 .

Iskanje elementov po besedilu:

V tem razdelku vam bom pokazal nekaj primerov iskanja in izbire elementov spletne strani po besedilu s knjižnico Selenium Python.

Začel bom z najpreprostejšim primerom izbire elementov spletne strani po besedilu, izbire povezav s spletne strani.

Na strani za prijavo na facebook.com imamo povezavo Ste pozabili račun? Kot lahko vidite na spodnjem posnetku zaslona. Izberemo to povezavo s selenom.

Ustvarite nov skript Python ex01.py in vanj vnesite naslednje vrstice kod.

odselenauvozspletni gonilnik
odselena.spletni gonilnik.običajni.ključe uvozKljuči
odselena.spletni gonilnik.običajni.avtor: uvozAvtor:
od čas uvozspi
brskalnik=spletni gonilnik.Chrome(executable_path='./drivers/chromedriver')
brskalnik.dobiti('https://www.facebook.com/')
ForgotAccountLink=brskalnik.Najdi_element(Avtor:.XPATH, '
//*[text () = 'Pozabljen račun?'] '
)
ForgotAccountLink.send_keys(Ključi.ENTER)

Ko končate, shranite ex01.py Python skript.

Vrstica 1-4 uvozi vse potrebne komponente v program Python.

Vrstica 6 ustvari Chrome brskalnik predmet z uporabo kromiran binarni iz vozniki/ imenik projekta.

Vrstica 8 brskalniku pove, naj naloži spletno stran facebook.com.

Vrstica 10 najde povezavo, ki vsebuje besedilo Ste pozabili račun? Uporaba izbirnika XPath. Za to sem uporabil izbirnik XPath //*[text () = 'Pozabljen račun?'] .

Izbirnik XPath se začne z //, kar pomeni, da je element lahko kjer koli na strani. The * simbol pove Selenium, naj izbere katero koli oznako ( do ali str ali razpon, itd.), ki ustreza pogoju v oglatih oklepajih [] . Tu je pogoj, da je besedilo elementa enako Ste pozabili račun?

The besedilo () Funkcija XPath se uporablja za pridobivanje besedila elementa.

Na primer, besedilo () vrača Pozdravljen, svet če izbere naslednji element HTML.

< do href='http://dummysite.com'>Pozdravljen, svet</ do >

Vrstica 11 pošilja pritisnite tipko na Ste pozabili račun? Povezava.

Zaženite skript Python ex01.py z naslednjim ukazom:

$ python ex01.py

Kot lahko vidite, spletni brskalnik najde, izbere in pritisne ključ na Ste pozabili račun? Povezava.

The Ste pozabili račun? Povezava vodi brskalnik na naslednjo stran.

Na enak način lahko preprosto iščete elemente, ki imajo želeno vrednost atributa.

Tukaj, Vpiši se gumb je vnos element, ki ima vrednost atribut Vpiši se . Poglejmo, kako izbrati ta element po besedilu.

Ustvarite nov skript Python ex02.py in vanj vnesite naslednje vrstice kod.

odselenauvozspletni gonilnik
odselena.spletni gonilnik.običajni.ključe uvozKljuči
odselena.spletni gonilnik.običajni.avtor: uvozAvtor:
od čas uvozspi
brskalnik=spletni gonilnik.Chrome(executable_path='./drivers/chromedriver')
brskalnik.dobiti('https://www.facebook.com/')
spi(5)
emailInput=brskalnik.Najdi_element(Avtor:.XPATH, '// input [@id =' email ']')
passwordInput=brskalnik.Najdi_element(Avtor:.XPATH, '// vnos [@id =' pass ']')
loginButton=brskalnik.Najdi_element(Avtor:.XPATH, '//*[@value =' Prijava ']')
emailInput.send_keys('[zaščiteno po e -pošti]')
spi(5)
passwordInput.send_keys('secret-pass')
spi(5)
loginButton.send_keys(Ključi.ENTER)

Ko končate, shranite ex02.py Python skript.

Vrstica 1-4 uvaža vse potrebne komponente.

Vrstica 6 ustvari Chrome brskalnik predmet z uporabo kromiran binarni iz vozniki/ imenik projekta.

Vrstica 8 brskalniku pove, naj naloži spletno stran facebook.com.

Ko zaženete skript, se vse zgodi tako hitro. Torej, uporabil sem spanje () večkrat deluje ex02.py za zamudo ukazov brskalnika. Na ta način lahko opazujete, kako vse deluje.

11. vrstica najde besedilno polje za vnos e -pošte in shrani sklic na element v datoteki emailInput spremenljivka.

Vrstica 12 najde besedilno polje za vnos e -pošte in shrani sklic na element v emailInput spremenljivka.

Vrstica 13 najde vhodni element, ki ima atribut vrednost od Vpiši se z izbirnikom XPath. Za to sem uporabil izbirnik XPath //*[@value = 'Prijava'] .

Izbirnik XPath se začne z // . To pomeni, da je element lahko kjer koli na strani. The * simbol pove Selenium, naj izbere katero koli oznako ( vnos ali str ali razpon, itd.), ki ustreza pogoju v oglatih oklepajih [] . Tukaj je pogoj atribut elementa vrednost je enako Vpiši se .

Vrstica 15 pošilja vhod[zaščiteno po e -pošti]v besedilno polje za vnos e -pošte, vrstica 16 pa odloži naslednjo operacijo.

Vrstica 18 pošlje vhodni skrivni prehod v besedilno polje za vnos gesla, vrstica 19 pa odloži naslednjo operacijo.

Vrstica 21 pošilja s pritiskom na gumb za prijavo.

Zaženite ex02.py Python skript z naslednjim ukazom:

$ python3 ex02.py

Kot lahko vidite, so besedilna polja e -pošte in gesla napolnjena z našimi lažnimi vrednostmi in Vpiši se je pritisnjen gumb.

Nato se stran pomakne na naslednjo stran.

Iskanje elementov po delnem besedilu:

V prejšnjem razdelku sem vam pokazal, kako poiščete elemente po določenem besedilu. V tem razdelku vam bom pokazal, kako z delnim besedilom poiščete elemente s spletnih strani.

V primeru, ex01.py , Iskal sem element povezave, ki vsebuje besedilo Ste pozabili račun? . Po istem elementu povezave lahko iščete z delnim besedilom, kot je npr Pozabljeni acc . Če želite to narediti, lahko uporabite vsebuje () XPath, kot je prikazano v vrstici 10 od ex03.py . Ostale kode so enake kot v ex01.py . Rezultati bodo enaki.

V vrstici 10 od ex03.py , je bil uporabljen izbirni pogoj vsebuje (vir, besedilo) XPath funkcija. Ta funkcija ima 2 argumenta, vir, in besedilo .

The vsebuje () funkcija preveri, ali je besedilo podano v drugem argumentu, se delno ujema z vir vrednost v prvem argumentu.

Vir je lahko besedilo elementa ( besedilo () ) ali vrednost atributa elementa ( @atr_name ).

V ex03.py , se preveri besedilo elementa.

Druga uporabna funkcija XPath za iskanje elementov s spletne strani z delnim besedilom je začne se z (vir, besedilo) . Ta funkcija ima enake argumente kot vsebuje () funkcijo in se uporablja na enak način. Edina razlika je v tem, da začne se z () funkcija preveri, ali je drugi argument besedilo je začetni niz prvega argumenta vir .

Primer sem prepisal ex03.py za iskanje elementa, za katerega se začne besedilo Pozabljeno, kot lahko vidite v vrstici 10 of ex04.py . Rezultat je enak kot v ex02 in ex03.py .

Sem tudi prepisal ex02.py tako da išče vhodni element, za katerega je vrednost atribut se začne z Dnevnik, kot lahko vidite v vrstici 13 of ex05.py . Rezultat je enak kot v ex02.py .

Zaključek:

V tem članku sem vam pokazal, kako poiščete in izberete elemente s spletnih strani po besedilu s knjižnico Selenium Python. Zdaj bi morali s knjižnico Selenium Python poiskati elemente s spletnih strani po določenem besedilu ali delnem besedilu.