Selen

Hvordan finne element etter tekst med selen

Hvordan finne element etter tekst med selen
Å finne og velge elementer fra websiden er nøkkelen til nettskraping med Selen. Du kan velge elementer ved hjelp av et kodenavn, ID, klassenavn, XPath-velger, CSS-velger osv. i selen. Du kan også velge elementer som har en spesifikk tekst med Selen. Dette er nyttig når du enkelt velger lenker og knapper fra websiden. Selv om sidestrukturen endres, så lenge teksten til nettsideelementet forblir den samme, bør velgeren din fungere fint. Dette er fordelen med å velge lenker og knapper ved hjelp av tekst i Selen.

I denne artikkelen skal jeg vise deg hvordan du finner og velger elementer fra websider ved hjelp av tekst i Selen med Selenium python-biblioteket. Så la oss komme i gang.

Forutsetninger:

For å prøve kommandoene og eksemplene til denne artikkelen må du ha:

  1. En Linux-distribusjon (helst Ubuntu) installert på datamaskinen din.
  2. Python 3 installert på datamaskinen din.
  3. PIP 3 installert på datamaskinen din.
  4. Python virtualenv pakken installert på datamaskinen din.
  5. Mozilla Firefox eller Google Chrome nettlesere installert på datamaskinen din.
  6. Må vite hvordan du installerer Firefox Gecko Driver eller Chrome Web Driver.

For å oppfylle kravene 4, 5 og 6, les artikkelen min Introduksjon til selen i Python 3.

Du kan finne mange artikler om de andre emnene på LinuxHint.com. Husk å sjekke dem ut hvis du trenger hjelp.

Sette opp en prosjektkatalog:

For å holde alt organisert, opprett en ny prosjektkatalog selen-tekst-velg / som følger:

$ mkdir -pv selen-tekst-velg / drivere

Naviger til selen-tekst-velg / prosjektkatalog som følger:

$ cd selen-text-select /

Opprett et virtuelt Python-miljø i prosjektkatalogen som følger:

$ virtualenv .venv

Aktiver det virtuelle miljøet som følger:

$ kilde .venv / bin / aktiver

Installer Selenium Python-biblioteket ved hjelp av PIP3 som følger:

$ pip3 installer selen

Last ned og installer alle nødvendige nettdrivere i drivere / katalog av prosjektet. Jeg har forklart prosessen med å laste ned og installere nettdrivere i artikkelen min Introduksjon til selen i Python 3.

Finne elementer etter tekst:

I denne delen skal jeg vise deg noen eksempler på å finne og velge nettsideelementer etter tekst med Selenium Python-biblioteket.

Jeg skal begynne med det enkleste eksemplet på å velge nettsideelementer etter tekst, velge koblinger fra websiden.

På påloggingssiden til facebook.com, vi har en lenke Glemt konto? Som du kan se på skjermbildet nedenfor. La oss velge denne lenken med Selen.

Opprett et nytt Python-skript ex01.py og skriv inn følgende kodelinjer i den.

fra selen import webdriver
fra selen.webdriver.felles.nøkler importerer nøkler
fra selen.webdriver.felles.ved import av
fra tid importerer søvn
nettleser = webdriver.Chrome (executable_path = "./ drivers / chromedriver ")
nettleser.få ("https: // www.facebook.com / ")
forgotAccountLink = nettleser.finn_element (av.XPATH, "
// * [text () = 'Glemt konto?'] ")
glemteAccountLink.send_keys (nøkler.TAST INN)

Når du er ferdig, lagrer du ex01.py Python-skript.

Linje 1-4 importerer alle nødvendige komponenter til Python-programmet.

Linje 6 oppretter en Chrome nettleser objektet ved hjelp av chromedriver binær fra drivere / katalog av prosjektet.

Linje 8 ber nettleseren om å laste inn nettstedet facebook.com.

Linje 10 finner lenken som har teksten Glemt konto? Bruker XPath-velgeren. For det har jeg brukt XPath-velgeren // * [text () = 'Glemt konto?'].

XPath-velgeren starter med //, som betyr at elementet kan være hvor som helst på siden. De * symbolet ber Selenium velge en hvilken som helst tag (en eller s eller span, etc.) som samsvarer med tilstanden i firkantede parenteser []. Her er betingelsen at elementteksten er lik Glemt konto?

De tekst() XPath-funksjonen brukes til å hente teksten til et element.

For eksempel, tekst() returnerer Hei Verden hvis det velger følgende HTML-element.

Hei Verden

Linje 11 sender tastetrykk til Glemt konto? Link.

Kjør Python-skriptet ex01.py med følgende kommando:

$ python ex01.py

Som du kan se, nettleseren finner, velger og trykker på nøkkelen på Glemt konto? Link.

De Glemt konto? Koblingen tar nettleseren til neste side.

På samme måte kan du enkelt søke etter elementer som har ønsket attributtverdi.

Her, den Logg Inn knappen er en inngang element som har verdi Egenskap Logg Inn. La oss se hvordan du velger dette elementet etter tekst.

Opprett et nytt Python-skript ex02.py og skriv inn følgende kodelinjer i den.

fra selen import webdriver
fra selen.webdriver.felles.nøkler importerer nøkler
fra selen.webdriver.felles.ved import av
fra tid importerer søvn
nettleser = nettdriver.Chrome (executable_path = "./ drivers / chromedriver ")
nettleser.få ("https: // www.facebook.com / ")
sove (5)
emailInput = nettleser.finn_element (av.XPATH, "// input [@ id = 'email']")
passwordInput = nettleser.finn_element (av.XPATH, "// input [@ id = 'pass']")
loginButton = nettleser.finn_element (av.XPATH, "// * [@ value = 'Logg inn']")
e-postinngang.send_keys ('[email protected]')
sove (5)
passwordInput.send_keys ('hemmelig pass')
sove (5)
loginButton.send_keys (nøkler.TAST INN)

Når du er ferdig, lagrer du ex02.py Python-skript.

Linje 1-4 importerer alle nødvendige komponenter.

Linje 6 oppretter en Chrome nettleser objektet ved hjelp av chromedriver binær fra drivere / katalog av prosjektet.

Linje 8 ber nettleseren om å laste inn nettstedet facebook.com.

Alt skjer så fort når du kjører skriptet. Så jeg har brukt søvn() fungerer mange ganger i ex02.py for å forsinke nettleserkommandoer. På denne måten kan du observere hvordan alt fungerer.

Linje 11 finner tekstboksen for e-postinngang og lagrer en referanse til elementet i e-postinngang variabel.

Linje 12 finner tekstboksen for e-postinngang og lagrer en referanse til elementet i e-postinngang variabel.

Linje 13 finner inngangselementet som har attributtet verdi av Logg Inn ved hjelp av XPath-velgeren. For det har jeg brukt XPath-velgeren // * [@ value = 'Logg inn'].

XPath-velgeren starter med //. Det betyr at elementet kan være hvor som helst på siden. De * symbolet ber Selenium velge en hvilken som helst tag (inngang eller s eller span, etc.) som samsvarer med tilstanden i firkantede parenteser []. Her er betingelsen elementattributtet verdi er lik Logg Inn.

Linje 15 sender inngangen [e-postbeskyttet] til tekstboksen for e-postinngang, og linje 16 forsinker neste operasjon.

Linje 18 sender inngangshemmelighetskortet til tekstboksen for inntasting av passord, og linje 19 forsinker neste operasjon.

Linje 21 sender tastetrykk til påloggingsknappen.

Kjør ex02.py Python-skript med følgende kommando:

$ python3 ex02.py

Som du kan se, er e-post- og passordtekstfeltene fylt med våre dummyverdier, og Logg Inn trykkes på.

Deretter navigerer siden til neste side.

Finne elementer etter delvis tekst:

I den tidligere delen har jeg vist deg hvordan du finner elementer etter spesifikk tekst. I denne delen skal jeg vise deg hvordan du finner elementer fra websider ved hjelp av delvis tekst.

I eksemplet, ex01.py, Jeg har søkt etter koblingselementet som har teksten Glemt konto?. Du kan søke i det samme koblingselementet ved å bruke delvis tekst som f.eks Glemt iht. For å gjøre det kan du bruke inneholder () XPath-funksjon, som vist i linje 10 i ex03.py. Resten av kodene er de samme som i ex01.py. Resultatene vil være de samme.

I linje 10 av ex03.py, utvalgsbetingelsen som ble brukt inneholder (kilde, tekst) XPath-funksjon. Denne funksjonen tar to argumenter, kilde, og tekst.

De inneholder () funksjon sjekker om tekst gitt i det andre argumentet samsvarer delvis med kilde verdi i det første argumentet.

Kilden kan være teksten til elementet (tekst()) eller attributtverdien til elementet (@attr_name).

I ex03.py, elementets tekst er sjekket.

En annen nyttig XPath-funksjon for å finne elementer fra websiden ved hjelp av delvis tekst er starter med (kilde, tekst). Denne funksjonen har de samme argumentene som inneholder () funksjon og brukes på samme måte. Den eneste forskjellen er at begynner med() funksjon sjekker om det andre argumentet tekst er startstrengen til det første argumentet kilde.

Jeg har skrevet om eksemplet ex03.py for å søke etter elementet som teksten starter med Glemt, som du kan se i linje 10 av ex04.py. Resultatet er det samme som i ex02 og ex03.py.

Jeg har også skrevet om ex02.py slik at den søker etter inngangselementet som verdi attributt starter med Logg, som du kan se i linje 13 av ex05.py. Resultatet er det samme som i ex02.py.

Konklusjon:

I denne artikkelen har jeg vist deg hvordan du finner og velger elementer fra websider etter tekst med Selenium Python-biblioteket. Nå skal du kunne finne elementer fra websider etter spesifikk tekst eller delvis tekst med Selenium Python-biblioteket.

Hvordan installere og spille Doom på Linux
Introduksjon til Doom Doom-serien stammer fra 90-tallet etter utgivelsen av den originale Doom. Det ble en øyeblikkelig suksess, og fra den tiden og u...
Vulkan for Linux-brukere
Med hver nye generasjon grafikkort ser vi spillutviklere skyve grensene for grafisk troskap og komme et skritt nærmere fotorealisme. Men til tross for...
OpenTTD vs Simutrans
Å lage din egen transportsimulering kan være morsom, avslappende og ekstremt fristende. Derfor må du sørge for at du prøver så mange spill som mulig f...