Selen

Kako najti element po besedilu s selenom

Kako najti element po besedilu s selenom
Iskanje in izbira elementov na spletni strani je ključnega pomena za strganje po spletu s selenom. Elemente lahko izberete z imenom oznake, ID-jem, imenom razreda, izbirnikom XPath, izbirnikom CSS itd. v selenu. S selenijem lahko izberete tudi elemente, ki imajo določeno besedilo. To je koristno za enostavno izbiro povezav in gumbov s spletne strani. Tudi če se struktura strani spremeni, dokler besedilo elementa spletne strani ostane enako, mora vaš izbirnik delovati v redu. To je prednost izbiranja povezav in gumbov z uporabo besedila v seleniju.

V tem članku vam bom pokazal, kako poiskati in izbrati elemente na spletnih straneh z uporabo besedila v seleniju s knjižnico python selenium. Torej, začnimo.

Pogoji:

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

  1. V vašem računalniku nameščena distribucija Linuxa (po možnosti Ubuntu).
  2. Python 3 nameščen v vašem računalniku.
  3. PIP 3 nameščen v 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 Chrome Web Driver.

Za izpolnjevanje zahtev 4, 5 in 6 preberite moj članek Uvod v selen v Pythonu 3.

V LinuxHintu lahko najdete veliko člankov o drugih temah.com. Ne pozabite jih preveriti, če potrebujete pomoč.

Nastavitev imenika projektov:

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

$ mkdir -pv selenium-text-select / drivers

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

$ cd selenium-text-select /

Ustvarite navidezno okolje Python v imeniku projekta, kot sledi:

$ virtualenv .venv

Aktivirajte navidezno okolje na naslednji način:

$ vir .venv / bin / aktiviraj

Namestite knjižnico Selenium Python s pomočjo PIP3, kot sledi:

$ pip3 namesti selen

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

Iskanje elementov po besedilu:

V tem poglavju vam bom predstavil nekaj primerov iskanja in izbiranja elementov spletnih strani po besedilu s knjižnico Selenium Python.

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

Na prijavni strani facebooka.com, imamo povezavo Pozabljeni račun? Kot lahko vidite na spodnjem posnetku zaslona. Izberimo to povezavo s selenom.

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

iz spletnega pogona za uvoz selena
iz selena.spletni pogon.običajni.tipke za uvoz ključev
iz selena.spletni pogon.običajni.z uvozom Avtor
od časa uvoza spanja
brskalnik = spletni voznik.Chrome (izvršljiva_pot = "./ drivers / chromedriver ")
brskalnik.get ("https: // www.facebook.com / ")
ForgotAccountLink = brskalnik.find_element (avtor.XPATH, "
// * [text () = 'Pozabljen račun?'] ")
ForgotAccountLink.send_keys (Tipke.ENTER)

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

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

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

Vrstica 8 brskalniku sporoča, naj naloži spletno stran facebook.com.

Vrstica 10 najde povezavo, ki vsebuje besedilo Pozabljeni 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 sporoča Seleniju, da izbere katero koli oznako (a ali str ali razpon, itd.), ki ustreza stanju znotraj oglatih oklepajev []. Tu je pogoj, da je besedilo elementa enako Pozabljeni račun?

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

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

Pozdravljen, svet

Vrstica 11 pošlje tipko pritisnite na Pozabljeni račun? Povezava.

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

$ python ex01.py

Kot lahko vidite, spletni brskalnik najde, izbere in pritisne tipko na Pozabljeni račun? Povezava.

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

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

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

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

iz spletnega pogona za uvoz selena
iz selena.spletni pogon.običajni.tipke za uvoz ključev
iz selena.spletni pogon.običajni.z uvozom Avtor
od časa uvoza spanja
brskalnik = spletni voznik.Chrome (izvršljiva_pot = "./ drivers / chromedriver ")
brskalnik.get ("https: // www.facebook.com / ")
spanje (5)
emailInput = brskalnik.find_element (avtor.XPATH, "// vnos [@ id = 'email']")
passwordInput = brskalnik.find_element (avtor.XPATH, "// vnos [@ id = 'pass']")
loginButton = brskalnik.find_element (avtor.XPATH, "// * [@ value = 'Prijava']")
emailInput.send_keys ('[e-pošta zaščitena]')
spanje (5)
passwordInput.send_keys ('secret-pass')
spanje (5)
loginButton.send_keys (Tipke.ENTER)

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

Vrstica 1-4 uvozi vse zahtevane komponente.

Vrstica 6 ustvari Chrome brskalnik predmet z uporabo kromedriver 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 v ex02.py za zakasnitev ukazov brskalnika. Tako lahko opazujete, kako vse deluje.

Vrstica 11 najde besedilno polje za vnos e-pošte in shrani sklic na element v 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 uporabo izbirnika 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 sporoča Seleniju, da izbere katero koli oznako (vhod ali str ali razpon, itd.), ki ustreza stanju znotraj oglatih oklepajev []. Tu je pogoj atribut element vrednost je enako Vpiši se.

Vrstica 15 pošlje vnos [zaščiteno z e-pošto] 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šlje tipko pritisnite na gumb za prijavo.

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

$ python3 ex02.py

Kot lahko vidite, sta polji za besedilo e-pošte in gesla napolnjeni z našimi navideznimi vrednostmi in Vpiši se pritisnjen gumb.

Nato se stran pomakne na naslednjo stran.

Iskanje elementov po delnem besedilu:

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

V primeru, ex01.py, Iskal sem element povezave, ki vsebuje besedilo Pozabljeni račun?. Isti element povezave lahko iščete z delnim besedilom, kot je Pozabljeno po. Če želite to narediti, lahko uporabite vsebuje () Funkcija XPath, kot je prikazano v vrstici 10 ex03.py. Preostale kode so enake kot v ex01.py. Rezultati bodo enaki.

V vrstici 10 od ex03.py, pogoj za izbiro uporabljen vsebuje (vir, besedilo) Funkcija XPath. Ta funkcija ima 2 argumenta, vir, in besedilo.

The vsebuje () funkcija preveri, ali je besedilo v drugem argumentu delno ustreza vir vrednost v prvem argumentu.

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

V ex03.py, besedilo elementa se preveri.

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 () funkcija 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 besedilo začne Pozabljeno, kot lahko vidite v vrstici 10 od ex04.py. Rezultat je enak kot pri 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 od ex05.py. Rezultat je enak kot pri ex02.py.

Zaključek:

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

Kako prenesti in igrati Sid Meier's Civilization VI v Linuxu
Uvod v igro Civilization 6 je sodoben pogled na klasični koncept, uveden v seriji iger Age of Empires. Ideja je bila dokaj preprosta; začeli bi v zelo...
Kako namestiti in igrati Doom v Linuxu
Uvod v Doom Serija Doom je nastala v devetdesetih letih po izidu prvotnega Dooma. Bil je takojšen hit in od takrat naprej je serija iger prejela števi...
Vulkan za uporabnike Linuxa
Z vsako novo generacijo grafičnih kart vidimo, da razvijalci iger premikajo meje grafične zvestobe in se približujejo fotorealizmu. A kljub vsem kredi...