Selen

Sådan finder du element ved hjælp af tekst med selen

Sådan finder du element ved hjælp af tekst med selen
At finde og vælge elementer fra websiden er nøglen til webskrabning med Selen. Du kan vælge elementer ved hjælp af et tagnavn, ID, klassenavn, XPath-vælger, CSS-vælger osv. i selen. Du kan også vælge elementer, der har en bestemt tekst med Selen. Dette er nyttigt til nemt at vælge links og knapper fra websiden. Selvom sidestrukturen ændres, så længe teksten i websideelementet forbliver den samme, skal din vælger fungere fint. Dette er fordelen ved at vælge links og knapper ved hjælp af tekst i Selen.

I denne artikel vil jeg vise dig, hvordan du finder og vælger elementer fra websider ved hjælp af tekst i Selen med Selenium python-biblioteket. Så lad os komme i gang.

Forudsætninger:

For at prøve kommandoer og eksempler på denne artikel skal du have:

  1. En Linux-distribution (helst Ubuntu) installeret på din computer.
  2. Python 3 installeret på din computer.
  3. PIP 3 installeret på din computer.
  4. Python virtualenv pakke installeret på din computer.
  5. Mozilla Firefox eller Google Chrome webbrowsere installeret på din computer.
  6. Skal vide, hvordan du installerer Firefox Gecko Driver eller Chrome Web Driver.

Læs min artikel for at opfylde kravene 4, 5 og 6 Introduktion til selen i Python 3.

Du kan finde mange artikler om de andre emner på LinuxHint.com. Sørg for at tjekke dem ud, hvis du har brug for hjælp.

Opsætning af et projektkatalog:

For at holde alt organiseret skal du oprette et nyt projektkatalog selen-tekst-vælg / som følger:

$ mkdir -pv selen-tekst-vælg / drivere

Naviger til selen-tekst-vælg / projektmappe som følger:

$ cd selen-tekst-vælg /

Opret et virtuelt Python-miljø i projektmappen som følger:

$ virtualenv .venv

Aktivér det virtuelle miljø som følger:

$ kilde .venv / bin / aktiver

Installer Selenium Python-biblioteket ved hjælp af PIP3 som følger:

$ pip3 installer selen

Download og installer alle de krævede webdrivere i drivere / projektmappe. Jeg har forklaret processen med at downloade og installere webdrivere i min artikel Introduktion til selen i Python 3.

Finde elementer efter tekst:

I dette afsnit vil jeg vise dig nogle eksempler på at finde og vælge websideelementer ved hjælp af tekst med Selenium Python-biblioteket.

Jeg begynder med det enkleste eksempel på valg af websideelementer efter tekst, valg af links fra websiden.

På login-siden på facebook.com, vi har et link Glemt konto? Som du kan se på skærmbilledet nedenfor. Lad os vælge dette link med Selen.

Opret et nyt Python-script ex01.py og indtast følgende linjer med koder i den.

fra selen import webdriver
fra selen.webdriver.almindelige.nøgler importerer nøgler
fra selen.webdriver.almindelige.ved import af
fra tidspunktet import søvn
browser = webdriver.Chrome (eksekverbar_sti = "./ drivere / chromedriver ")
browser.get ("https: // www.Facebook.com / ")
forgotAccountLink = browser.find_element (af.XPATH, "
// * [text () = 'Glemt konto?'] ")
glemteAccountLink.send_keys (nøgler.GÅ IND)

Når du er færdig, skal du gemme ex01.py Python-script.

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

Linje 6 opretter en Chrome browser objekt ved hjælp af chromedriver binær fra drivere / projektmappe.

Linje 8 beder browseren om at indlæse hjemmesiden facebook.com.

Linje 10 finder det link, der har teksten Glemt konto? Brug af XPath-vælger. Til det har jeg brugt XPath-vælgeren // * [text () = 'Glemt konto?'].

XPath-vælgeren starter med //, hvilket betyder, at elementet kan være hvor som helst på siden. Det * symbol fortæller Selen at vælge et hvilket som helst mærke (-en eller s eller spændvidde, etc.), der matcher betingelsen inden for de firkantede parenteser []. Her er betingelsen, at elementets tekst er lig med Glemt konto?

Det tekst() XPath-funktionen bruges til at hente teksten til et element.

For eksempel, tekst() vender tilbage Hej Verden hvis det vælger følgende HTML-element.

Hej Verden

Linie 11 sender tastetryk til Glemt konto? Link.

Kør Python-scriptet ex01.py med følgende kommando:

$ python ex01.py

Som du kan se, finder, vælger og trykker webbrowseren på nøgle på Glemt konto? Link.

Det Glemt konto? Linket fører browseren til den næste side.

På samme måde kan du nemt søge efter elementer, der har den ønskede attributværdi.

Her, den Log på knappen er en input element, der har værdi attribut Log på. Lad os se, hvordan du vælger dette element ved hjælp af tekst.

Opret et nyt Python-script ex02.py og indtast følgende linjer med koder i den.

fra selen import webdriver
fra selen.webdriver.almindelige.nøgler importerer nøgler
fra selen.webdriver.almindelige.ved import af
fra tidspunktet import søvn
browser = webdriver.Chrome (eksekverbar_sti = "./ drivere / chromedriver ")
browser.get ("https: // www.Facebook.com / ")
sove (5)
emailInput = browser.find_element (af.XPATH, "// input [@ id = 'email']")
passwordInput = browser.find_element (af.XPATH, "// input [@ id = 'pass']")
loginButton = browser.find_element (af.XPATH, "// * [@ value = 'Log In']")
emailInput.send_keys ('[email protected]')
sove (5)
passwordInput.send_keys ('hemmelig pas')
sove (5)
loginKnap.send_keys (nøgler.GÅ IND)

Når du er færdig, skal du gemme ex02.py Python-script.

Linje 1-4 importerer alle de nødvendige komponenter.

Linje 6 opretter en Chrome browser objekt ved hjælp af chromedriver binær fra drivere / projektmappe.

Linje 8 beder browseren om at indlæse hjemmesiden facebook.com.

Alt sker så hurtigt, når du kører scriptet. Så jeg har brugt søvn() fungerer mange gange i ex02.py til forsinkelse af browserkommandoer. På denne måde kan du observere, hvordan alt fungerer.

Linje 11 finder tekstfeltet til e-mail-input og gemmer en reference for elementet i emailInput variabel.

Linie 12 finder tekstfeltet til e-mail-input og gemmer en reference for elementet i emailInput variabel.

Linie 13 finder det inputelement, der har attributten værdi af Log på ved hjælp af XPath-vælger. Til det har jeg brugt XPath-vælgeren // * [@ value = 'Log In'].

XPath-vælgeren starter med //. Det betyder, at elementet kan være hvor som helst på siden. Det * symbol fortæller Selen at vælge et hvilket som helst mærke (input eller s eller spændvidde, etc.), der matcher betingelsen inden for de firkantede parenteser []. Her er betingelsen elementattributten værdi er lig med Log på.

Linje 15 sender input [e-mailbeskyttet] til tekstfeltet til e-mail-input, og linje 16 forsinker den næste handling.

Linie 18 sender input-hemmelighedskortet til tekstfeltet til indtastning af adgangskode, og linje 19 forsinker den næste operation.

Linie 21 sender tastetryk på login-knappen.

Kør ex02.py Python-script med følgende kommando:

$ python3 ex02.py

Som du kan se, er tekstfelterne med e-mail og adgangskode fyldt med vores dummy-værdier og Log på der trykkes på knappen.

Derefter navigerer siden til den næste side.

Finde elementer efter delvis tekst:

I det tidligere afsnit har jeg vist dig, hvordan du finder elementer efter specifik tekst. I dette afsnit vil jeg vise dig, hvordan du finder elementer fra websider ved hjælp af delvis tekst.

I eksemplet, ex01.py, Jeg har søgt efter det linkelement, der har teksten Glemt konto?. Du kan søge i det samme linkelement ved hjælp af delvis tekst som f.eks Glemt acc. For at gøre det kan du bruge indeholder() XPath-funktion, som vist i linje 10 i ex03.py. Resten af ​​koderne er de samme som i ex01.py. Resultaterne vil være de samme.

I linje 10 i ex03.py, udvælgelsesbetingelsen anvendt indeholder (kilde, tekst) XPath-funktion. Denne funktion tager to argumenter, kilde, og tekst.

Det indeholder() funktion kontrollerer, om tekst givet i det andet argument matcher delvist kilde værdi i det første argument.

Kilden kan være teksten til elementet (tekst()) eller elementets attributværdi (@attr_name).

I ex03.py, elementets tekst er markeret.

En anden nyttig XPath-funktion til at finde elementer fra websiden ved hjælp af delvis tekst er starter med (kilde, tekst). Denne funktion har de samme argumenter som indeholder() funktion og bruges på samme måde. Den eneste forskel er, at starter med () funktion kontrollerer, om det andet argument tekst er startstrengen for det første argument kilde.

Jeg har omskrevet eksemplet ex03.py for at søge efter det element, som teksten starter med Glemt, som du kan se i linje 10 i ex04.py. Resultatet er det samme som i ex02 og ex03.py.

Jeg har også skrevet om ex02.py så den søger efter det inputelement, som værdi attribut starter med Log, som du kan se i linje 13 i ex05.py. Resultatet er det samme som i ex02.py.

Konklusion:

I denne artikel har jeg vist dig, hvordan du finder og vælger elementer fra websider efter tekst med Selenium Python-biblioteket. Nu skal du være i stand til at finde elementer fra websider efter specifik tekst eller delvis tekst med Selenium Python-biblioteket.

Mus Sådan ændres mus og touchpad-indstillinger ved hjælp af Xinput i Linux
Sådan ændres mus og touchpad-indstillinger ved hjælp af Xinput i Linux
De fleste Linux-distributioner leveres som standard med "libinput" -biblioteket til at håndtere inputhændelser på et system. Det kan behandle inputhæn...
Mus Remap dine museknapper forskelligt til anden software med X-Mouse Button Control
Remap dine museknapper forskelligt til anden software med X-Mouse Button Control
Måske har du brug for et værktøj, der kan ændre din muses kontrol med hver applikation, du bruger. Hvis dette er tilfældet, kan du prøve en applikatio...
Mus Microsoft Sculpt Touch Wireless Mouse Review
Microsoft Sculpt Touch Wireless Mouse Review
Jeg har for nylig læst om Microsoft Sculpt Touch trådløs mus og besluttede at købe den. Efter at have brugt det et stykke tid besluttede jeg at dele m...