Kuinka löytää elementti tekstin avulla seleenillä

How Find Element Text With Selenium



Elementtien paikantaminen ja valitseminen verkkosivulta on avain web -kaavintaan seleenillä. Voit valita elementtejä käyttämällä tagin nimeä, tunnusta, luokan nimeä, XPath -valitsinta, CSS -valitsinta jne. Seleniumissa. Voit myös valita elementtejä, joilla on tietty teksti Seleniumilla. Tästä on apua linkkien ja painikkeiden valinnassa helposti verkkosivulta. Vaikka sivurakenne muuttuisi, valitsimen pitäisi toimia hyvin niin kauan kuin verkkosivuelementin teksti pysyy samana. Tästä on se etu, että valitset linkkejä ja painikkeita Selenium -tekstin avulla.

Tässä artikkelissa aion näyttää, kuinka voit etsiä ja valita elementtejä verkkosivuilta käyttämällä Selenium -tekstiä Selenium -python -kirjaston kanssa. Aloitetaan siis.







Edellytykset:

Jos haluat kokeilla tämän artikkelin komentoja ja esimerkkejä, sinulla on oltava:



  1. Tietokoneeseesi on asennettu Linux -jakelu (mieluiten Ubuntu).
  2. Python 3 asennettu tietokoneellesi.
  3. PIP 3 asennettu tietokoneellesi.
  4. Python virtualenv tietokoneeseen asennettu paketti.
  5. Tietokoneellesi asennetut Mozilla Firefox- tai Google Chrome -selaimet.
  6. Sinun on tiedettävä, kuinka asentaa Firefox Gecko -ohjain tai Chrome -verkko -ohjain.

Jos haluat täyttää vaatimukset 4, 5 ja 6, lue artikkelini Johdatus seleeniin Python 3: ssa .



Löydät monia artikkeleita muista aiheista LinuxHint.com . Muista tarkistaa ne, jos tarvitset apua.





Projektihakemiston määrittäminen:

Jos haluat pitää kaiken järjestyksessä, luo uusi projektihakemisto selenium-text-select/ seuraavasti:

$mkdir -pvselenium-text-select/Kuljettajat



Siirry kohtaan selenium-text-select/ projektihakemisto seuraavasti:

$CDselenium-text-select/

Luo Python -virtuaalinen ympäristö projektihakemistoon seuraavasti:

$virtualenv .venv

Aktivoi virtuaalinen ympäristö seuraavasti:

$lähde.venv/olen/aktivoida

Asenna Selenium Python -kirjasto PIP3: lla seuraavasti:

$ pip3 asenna seleeni

Lataa ja asenna kaikki tarvittavat web -ohjaimet Kuljettajat/ hankkeen hakemisto. Olen selittänyt artikkelissani web -ohjainten lataamisen ja asentamisen Johdatus seleeniin Python 3: ssa .

Elementtien etsiminen tekstin mukaan:

Tässä osassa aion näyttää sinulle esimerkkejä Web -sivuelementtien löytämisestä ja valitsemisesta tekstin perusteella Selenium Python -kirjaston avulla.

Aion aloittaa yksinkertaisimmasta esimerkistä verkkosivuelementtien valitsemisesta tekstin mukaan, linkkien valitsemisesta verkkosivulta.

Facebookin kirjautumissivulla on linkki Unohditko tilin? Kuten alla olevasta kuvakaappauksesta näet. Valitse tämä linkki Seleniumilla.

Luo uusi Python -komentosarja ex01.py ja kirjoita siihen seuraavat koodirivit.

alkaenseleenituontiWeb -ajuri
alkaenseleeni.Web -ajuri.yleinen.näppäimiä tuontiAvaimet
alkaenseleeni.Web -ajuri.yleinen.käyttäjältä tuontiLähettäjä
alkaen aika tuontinukkua
selaimen=Web -ajuri.Kromi(suoritettava_polku='./drivers/chromedriver')
selaimen.saada('https://www.facebook.com/')
forgotAccountLink=selaimen.find_element(Lähettäjä.XPATH, ''
//*[text () = 'Unohditko tilin?'] '
)
forgotAccountLink.send_keys(Avaimet.TULLA SISÄÄN)

Kun olet valmis, tallenna ex01.py Python -käsikirjoitus.

Rivi 1-4 tuo kaikki vaaditut komponentit Python-ohjelmaan.

Rivi 6 luo Chromen selaimen objekti käyttämällä kromiohjain binaarinen Kuljettajat/ hankkeen hakemisto.

Rivi 8 kehottaa selainta lataamaan verkkosivuston facebook.com.

Rivi 10 löytää linkin, jossa on teksti Unohditko tilin? Käytä XPath -valitsinta. Tätä varten olen käyttänyt XPath -valitsinta //*[text () = ’Unohditko tilin?’] .

XPath -valitsin alkaa merkillä //, eli elementti voi sijaita missä tahansa sivulla. The * symboli kehottaa Seleniumia valitsemaan minkä tahansa tunnisteen ( kohteeseen tai s tai jänneväli, jne.), joka vastaa hakasulkeiden sisällä olevaa tilaa [] . Tässä ehto on, että elementin teksti on yhtä suuri kuin Unohditko tilin?

The teksti() XPath -toimintoa käytetään elementin tekstin hakemiseen.

Esimerkiksi, teksti() palauttaa Hei maailma jos se valitsee seuraavan HTML -elementin.

< kohteeseen href='http://dummysite.com'>Hei maailma</ kohteeseen >

Rivi 11 lähettää näppäintä painamalla Unohditko tilin? Linkki.

Suorita Python -komentosarja ex01.py seuraavalla komennolla:

$ python ex01.py

Kuten näette, selain etsii, valitsee ja painaa näppäintä Unohditko tilin? Linkki.

The Unohditko tilin? Linkki vie selaimen seuraavalle sivulle.

Samalla tavalla voit helposti etsiä elementtejä, joilla on haluttu määritteen arvo.

Tässä, Kirjaudu sisään -painike on tulo elementti, jossa on arvo attribuutti Kirjaudu sisään . Katsotaanpa, kuinka tämä elementti valitaan tekstin perusteella.

Luo uusi Python -komentosarja ex02.py ja kirjoita siihen seuraavat koodirivit.

alkaenseleenituontiWeb -ajuri
alkaenseleeni.Web -ajuri.yleinen.näppäimiä tuontiAvaimet
alkaenseleeni.Web -ajuri.yleinen.käyttäjältä tuontiLähettäjä
alkaen aika tuontinukkua
selaimen=Web -ajuri.Kromi(suoritettava_polku='./drivers/chromedriver')
selaimen.saada('https://www.facebook.com/')
nukkua(5)
emailInput=selaimen.find_element(Lähettäjä.XPATH, '// syöte [@id =' email ']')
passwordInput=selaimen.find_element(Lähettäjä.XPATH, '// syöte [@id =' pass ']')
loginButton=selaimen.find_element(Lähettäjä.XPATH, '//*[@value =' Kirjaudu sisään ']')
emailInput.send_keys('[email protected]')
nukkua(5)
passwordInput.send_keys('salainen passi')
nukkua(5)
loginButton.send_keys(Avaimet.TULLA SISÄÄN)

Kun olet valmis, tallenna ex02.py Python -käsikirjoitus.

Rivi 1-4 tuo kaikki vaaditut komponentit.

Rivi 6 luo Chromen selaimen objekti käyttämällä kromiohjain binaarinen Kuljettajat/ hankkeen hakemisto.

Rivi 8 kehottaa selainta lataamaan verkkosivuston facebook.com.

Kaikki tapahtuu niin nopeasti, kun suoritat komentosarjan. Olen siis käyttänyt nukkua() toimivat monta kertaa ex02.py selainkomentojen viivästymiseen. Näin voit seurata, miten kaikki toimii.

Rivi 11 löytää sähköpostin syöttötekstiruudun ja tallentaa viittauksen elementtiin emailInput muuttuja.

Rivi 12 löytää sähköpostin syöttötekstiruudun ja tallentaa viittauksen elementtiin emailInput muuttuja.

Rivi 13 löytää syöttöelementin, jolla on ominaisuus arvo / Kirjaudu sisään XPath -valitsimella. Tätä varten olen käyttänyt XPath -valitsinta //*[@value = ’Kirjaudu sisään]] .

XPath -valitsin alkaa merkillä // . Se tarkoittaa, että elementti voi olla missä tahansa sivulla. The * symboli kehottaa Seleniumia valitsemaan minkä tahansa tunnisteen ( tulo tai s tai jänneväli, jne.), joka vastaa hakasulkeiden sisällä olevaa tilaa [] . Tässä ehto on elementin attribuutti arvo on yhtä suuri kuin Kirjaudu sisään .

Rivi 15 lähettää tulon[sähköposti suojattu]sähköpostin syöttökenttään, ja rivi 16 viivästyttää seuraavaa toimintoa.

Rivi 18 lähettää salaisen salasanan salasanan syöttökenttään, ja rivi 19 viivästyttää seuraavaa toimintoa.

Rivi 21 lähettää paina kirjautumispainiketta.

Suorita ex02.py Python -komentosarja seuraavalla komennolla:

$ python3 ex02.py

Kuten huomaat, sähköpostin ja salasanan tekstikentät ovat täynnä tyhjiä arvojamme ja Kirjaudu sisään painiketta painetaan.

Sitten sivu siirtyy seuraavalle sivulle.

Elementtien etsiminen osatekstin mukaan:

Aiemmassa osassa olen näyttänyt sinulle, miten voit löytää elementtejä tietyn tekstin perusteella. Tässä osassa näytän sinulle, kuinka löydät elementtejä verkkosivuilta osittaista tekstiä käyttäen.

Esimerkissä ex01.py , Olen etsinyt linkkielementtiä, jossa on teksti Unohditko tilin? . Voit etsiä samaa linkkielementtiä käyttämällä osittaista tekstiä, kuten Unohdettu acc . Voit tehdä sen käyttämällä sisältää() XPath -toiminto, kuten rivillä 10 näkyy ex03.py . Loput koodit ovat samat kuin kohdassa ex01.py . Tulokset ovat samat.

Rivillä 10 ex03.py , käytetyssä valintaehdossa sisältää (lähde, teksti) XPath -toiminto. Tämä funktio vaatii 2 argumenttia, lähde, ja teksti .

The sisältää() toiminto tarkistaa, onko teksti toisessa argumentissa annettu osittain vastaa lähde arvo ensimmäisessä argumentissa.

Lähde voi olla elementin teksti ( teksti() ) tai elementin ( @attr_name ).

Sisään ex03.py , elementin teksti tarkistetaan.

Toinen hyödyllinen XPath -toiminto löytää elementtejä verkkosivulta osittaisen tekstin avulla alkaa (lähde, teksti) . Tällä funktiolla on samat argumentit kuin sisältää() toimintoa ja sitä käytetään samalla tavalla. Ainoa ero on, että alkaa () funktio tarkistaa, onko toinen argumentti teksti on ensimmäisen argumentin alkujono lähde .

Olen kirjoittanut esimerkin uudelleen ex03.py etsiäksesi elementtiä, jolla teksti alkaa Unohdettu, kuten näet rivillä 10 ex04.py . Tulos on sama kuin kohdassa ex02 ja ex03.py .

Olen myös kirjoittanut uudelleen ex02.py niin, että se etsii syöttöelementtiä, jolle arvo attribuutti alkaa Hirsi, kuten näet rivillä 13 ex05.py . Tulos on sama kuin kohdassa ex02.py .

Johtopäätös:

Tässä artikkelissa olen näyttänyt sinulle, kuinka löydät ja valitset elementtejä verkkosivuilta tekstin mukaan Selenium Python -kirjaston avulla. Nyt sinun pitäisi pystyä löytämään elementtejä verkkosivuilta tietyn tekstin tai osittaisen tekstin perusteella Selenium Python -kirjaston avulla.