Hur man hittar element efter text med selen

How Find Element Text With Selenium



Att hitta och välja element från webbsidan är nyckeln till webbskrapning med Selenium. Du kan välja element med hjälp av ett taggnamn, ID, klassnamn, XPath -väljare, CSS -väljare, etc. i Selenium. Du kan också välja element som har en specifik text med Selenium. Detta är användbart för att enkelt välja länkar och knappar från webbsidan. Även om sidstrukturen ändras, så länge texten i webbsidans element förblir densamma, bör väljaren fungera bra. Detta är fördelen med att välja länkar och knappar med text i Selenium.

I den här artikeln kommer jag att visa dig hur du hittar och väljer element från webbsidor med text i Selenium med Selenium python -biblioteket. Så, låt oss komma igång.







Förkunskaper:

För att prova kommandona och exemplen på den här artikeln måste du ha:



  1. En Linux -distribution (helst Ubuntu) installerad på din dator.
  2. Python 3 installerat på din dator.
  3. PIP 3 installerat på din dator.
  4. Pytonorm virtualenv paket installerat på din dator.
  5. Mozilla Firefox eller Google Chrome webbläsare installerade på din dator.
  6. Måste veta hur du installerar Firefox Gecko Driver eller Chrome Web Driver.

För att uppfylla kraven 4, 5 och 6, läs min artikel Introduktion till selen i Python 3 .



Du kan hitta många artiklar om andra ämnen på LinuxHint.com . Var noga med att kolla in dem om du behöver hjälp.





Konfigurera en projektkatalog:

För att hålla allt organiserat, skapa en ny projektkatalog selen-text-välj/ som följer:

$mkdir -pvselen-text-välj/förare



Navigera till selen-text-välj/ projektkatalog enligt följande:

$CDselen-text-välj/

Skapa en virtuell Python -miljö i projektkatalogen enligt följande:

$virtualenv .venv

Aktivera den virtuella miljön enligt följande:

$källa.venv/am/Aktivera

Installera Selenium Python -bibliotek med PIP3 enligt följande:

$ pip3 installera selen

Ladda ner och installera alla nödvändiga webbdrivrutiner i förare/ projektkatalog. Jag har förklarat processen för nedladdning och installation av webbdrivrutiner i min artikel Introduktion till selen i Python 3 .

Hitta element efter text:

I det här avsnittet kommer jag att visa dig några exempel på hur du hittar och väljer webbsidaelement efter text med Selenium Python -biblioteket.

Jag ska börja med det enklaste exemplet på att välja webbsidaelement efter text, välja länkar från webbsidan.

På inloggningssidan på facebook.com har vi en länk Glömt konto? Som du kan se på skärmdumpen nedan. Låt oss välja denna länk med Selenium.

Skapa ett nytt Python -skript ex01.py och skriv in följande koderader i den.

frånselenimporterawebbdriver
frånselen.webbdriver.allmänning.nycklar importeraNycklar
frånselen.webbdriver.allmänning.förbi importeraFörbi
från tid importerasömn
webbläsare=webbdriver.Krom(körbar_väg='./drivers/chromedriver')
webbläsare.skaffa sig('https://www.facebook.com/')
forgotAccountLink=webbläsare.hitta_element(Förbi.XPATH, '
//*[text () = 'Glömt konto?'] '
)
forgotAccountLink.send_keys(Nycklar.STIGA PÅ)

När du är klar, spara ex01.py Python -skript.

Rad 1-4 importerar alla nödvändiga komponenter till Python-programmet.

Rad 6 skapar en Chrome webbläsare objekt med hjälp av kromförare binärt från förare/ projektkatalog.

Linje 8 uppmanar webbläsaren att ladda webbplatsen facebook.com.

Rad 10 hittar länken som har texten Glömt konto? Använda XPath -väljaren. För det har jag använt XPath -väljaren //*[text () = ’Glömt konto?’] .

XPath -väljaren börjar med //, vilket innebär att elementet kan vara var som helst på sidan. De * symbolen säger till Selen att välja valfri tagg ( till eller sid eller spänna, etc.) som matchar villkoret inom hakparenteserna [] . Här är villkoret att elementtexten är lika med Glömt konto?

De text() XPath -funktionen används för att hämta texten till ett element.

Till exempel, text() returnerar Hej världen om det väljer följande HTML -element.

< till href='http://dummysite.com'>Hej världen</ till >

Linje 11 skickar knapptryckning till Glömt konto? Länk.

Kör Python -skriptet ex01.py med följande kommando:

$ python ex01.py

Som du ser hittar webbläsaren, väljer och trycker på nyckel på Glömt konto? Länk.

De Glömt konto? Länken tar webbläsaren till följande sida.

På samma sätt kan du enkelt söka efter element som har ditt önskade attributvärde.

Här, Logga in knappen är en inmatning element som har värde attribut Logga in . Låt oss se hur du väljer detta element efter text.

Skapa ett nytt Python -skript ex02.py och skriv in följande koderader i den.

frånselenimporterawebbdriver
frånselen.webbdriver.allmänning.nycklar importeraNycklar
frånselen.webbdriver.allmänning.förbi importeraFörbi
från tid importerasömn
webbläsare=webbdriver.Krom(körbar_väg='./drivers/chromedriver')
webbläsare.skaffa sig('https://www.facebook.com/')
sömn(5)
emailInput=webbläsare.hitta_element(Förbi.XPATH, '// input [@id =' email ']')
passwordInput=webbläsare.hitta_element(Förbi.XPATH, '// input [@id =' pass ']')
inloggningsknapp=webbläsare.hitta_element(Förbi.XPATH, '//*[@value =' Logga in ']')
emailInput.send_keys('[e -postskyddad]')
sömn(5)
passwordInput.send_keys('hemligt pass')
sömn(5)
inloggningsknapp.send_keys(Nycklar.STIGA PÅ)

När du är klar, spara ex02.py Python -skript.

Rad 1-4 importerar alla nödvändiga komponenter.

Rad 6 skapar en Chrome webbläsare objekt med hjälp av kromförare binärt från förare/ projektkatalog.

Linje 8 uppmanar webbläsaren att ladda webbplatsen facebook.com.

Allt händer så snabbt när du kör scriptet. Så jag har använt sömn() fungera många gånger i ex02.py för att fördröja webbläsarkommandon. På så sätt kan du observera hur allt fungerar.

Rad 11 hittar textrutan för e -postinmatning och lagrar en referens för elementet i emailInput variabel.

Rad 12 hittar textrutan för e -postinmatning och lagrar en referens för elementet i emailInput variabel.

Rad 13 hittar ingångselementet som har attributet värde av Logga in med XPath -väljaren. För det har jag använt XPath -väljaren //*[@value = ’Logga in’] .

XPath -väljaren börjar med // . Det betyder att elementet kan vara var som helst på sidan. De * symbolen säger till Selen att välja valfri tagg ( inmatning eller sid eller spänna, etc.) som matchar villkoret inom hakparenteserna [] . Här är villkoret elementattributet värde är lika med Logga in .

Linje 15 skickar ingången[e -postskyddad]till textrutan för e -postinmatning och rad 16 försenar nästa operation.

Rad 18 skickar inmatningens hemliga pass till textrutan för inmatning av lösenord, och rad 19 fördröjer nästa operation.

Linje 21 skickar tryck på knappen för att logga in.

Springa det ex02.py Python -skript med följande kommando:

$ python3 ex02.py

Som du kan se är textrutorna för e -post och lösenord fyllda med våra dummyvärden och Logga in knappen trycks in.

Sedan navigerar sidan till följande sida.

Hitta element efter deltext:

I det tidigare avsnittet har jag visat dig hur du hittar element efter specifik text. I det här avsnittet kommer jag att visa dig hur du hittar element från webbsidor med deltext.

I exemplet, ex01.py , Jag har sökt efter länkelementet som har texten Glömt konto? . Du kan söka i samma länkelement med deltext, t.ex. Glömt enl . För att göra det kan du använda innehåller () XPath -funktion, som visas i rad 10 i ex03.py . Resten av koderna är desamma som i ex01.py . Resultaten blir desamma.

I rad 10 av ex03.py , valförhållandet använde innehåller (källa, text) XPath -funktion. Denna funktion tar 2 argument, källa, och text .

De innehåller () funktionen kontrollerar om text givet i det andra argumentet matchar delvis källa värde i det första argumentet.

Källan kan vara texten till elementet ( text() ) eller elementets attributvärde ( @attr_name ).

I ex03.py , är texten för elementet markerad.

En annan användbar XPath -funktion för att hitta element från webbsidan med deltext är börjar med (källa, text) . Denna funktion har samma argument som innehåller () fungerar och används på samma sätt. Den enda skillnaden är att börjar med() funktion kontrollerar om det andra argumentet text är startsträngen för det första argumentet källa .

Jag har skrivit om exemplet ex03.py för att söka efter det element som texten börjar med Glömt, som du kan se på rad 10 ex04.py . Resultatet är detsamma som i ex02 och ex03.py .

Jag har också skrivit om ex02.py så att den söker efter ingångselementet som värde attribut börjar med Logga, som du kan se på rad 13 i ex05.py . Resultatet är detsamma som i ex02.py .

Slutsats:

I den här artikeln har jag visat dig hur du hittar och väljer element från webbsidor efter text med Selenium Python -biblioteket. Nu ska du kunna hitta element från webbsidor efter specifik text eller deltext med Selenium Python -biblioteket.