Sissejuhatus seleeni Python 3 -s

Introduction Selenium Python 3



Selenium on raamistik, mida kasutatakse veebirakenduste testimiseks. Selenium automatiseerib brauseri (nt Chrome või Firefox) teie soovitud veebisaidil testide tegemiseks. Selenium on ka väga võimas veebi kraapimisvahend. Selenium toetab JavaScripti ja kõiki kaasaegseid brauseri funktsioone. See tööriist on väga tõhus veebisaitidelt teabe hankimiseks.

See artikkel näitab teile, kuidas seadistada Selenium oma Linuxi distributsioonile (st Ubuntule), samuti seda, kuidas teha Selenium Python 3 raamatukoguga põhilisi veebiautomaatikaid ja -lõikeid.





Eeldused

Selles artiklis kasutatud käskude ja näidete proovimiseks peab teil olema järgmine.



1) Teie arvutisse installitud Linuxi distributsioon (eelistatavalt Ubuntu).
2) arvutisse installitud Python 3.
3) PIP 3 on teie arvutisse installitud.
4) Teie arvutisse installitud Google Chrome'i või Firefoxi veebibrauser.



Nende teemade kohta leiate palju artikleid aadressilt LinuxHint.com . Vaadake neid artikleid kindlasti, kui vajate täiendavat abi.





Python 3 virtuaalse keskkonna ettevalmistamine projekti jaoks

Pythoni virtuaalset keskkonda kasutatakse isoleeritud Pythoni projektikataloogi loomiseks. Pythoni moodulid, mille installite PIP -i abil, installitakse ainult projekti kataloogi, mitte globaalselt.

Python virtualenv moodulit kasutatakse Pythoni virtuaalsete keskkondade haldamiseks.



Saate Pythoni installida virtualenv moodul globaalselt, kasutades PIP 3:

$ sudo pip3 install virtualenv

PIP3 laadib alla ja installib kõik vajalikud moodulid üle maailma.

Siinkohal Python virtualenv moodul tuleb paigaldada globaalselt.

Looge projekti kataloog python-selenium-basic/ oma praeguses töökataloogis järgmiselt:

$ mkdir -pv python-selenium-basic/draiverid

Liikuge oma äsja loodud projekti kataloogi python-selenium-basic/ , järgnevalt:

$CDpython-selenium-basic/

Looge oma projekti kataloogi Pythoni virtuaalne keskkond järgmise käsuga:

$ virtualenv.env

Pythoni virtuaalne keskkond tuleks nüüd luua teie projekti kataloogi. ”

Aktiveerige Pythoni virtuaalne keskkond oma projekti kataloogis järgmise käsu abil:

$ allikas.env/bin/aktiveeri

Nagu näete, on selle projekti kataloogi jaoks aktiveeritud Pythoni virtuaalne keskkond.

Selenium Pythoni kogu installimine

Selenium Pythoni raamatukogu on saadaval Python PyPI ametlikus hoidlas.

Selle teegi saate installida PIP 3 abil järgmiselt.

$ pip3 install seleen

Selenium Pythoni teek tuleks nüüd installida.

Nüüd, kui Selenium Pythoni teek on installitud, peate järgmisena installima oma lemmikveebibrauseri veebidraiveri. Selles artiklis näitan teile, kuidas installida Firefoxi ja Chrome'i veebidraiverid Seleniumile.

Firefox Gecko draiveri installimine

Firefox Gecko draiver võimaldab teil seleeni abil Firefoxi veebibrauserit juhtida või automatiseerida.

Firefox Gecko draiveri allalaadimiseks külastage GitHub avaldab mozilla/geckodriveri lehe veebibrauserist.

Nagu näete, on v0.26.0 selle artikli kirjutamise ajal Firefoxi Gecko draiveri uusim versioon.

Firefox Gecko draiveri allalaadimiseks kerige natuke alla ja klõpsake Linuxi geckodriver tar.gz arhiivil, sõltuvalt teie operatsioonisüsteemi arhitektuurist.

Kui kasutate 32-bitist operatsioonisüsteemi, klõpsake nuppu geckodriver-v0.26.0-linux32.tar.gz link.

Kui kasutate 64-bitist operatsioonisüsteemi, klõpsake nuppu geckodriver-v0.26.0-linuxx64.tar.gz link.

Minu puhul laadin alla Firefoxi Gecko draiveri 64-bitise versiooni.

Teie brauser peaks paluma teil arhiivi salvestada. Valige Salvesta fail ja seejärel klõpsake Okei .

Firefoxi Gecko draiverite arhiiv tuleks alla laadida kaustast ~/Allalaadimised kataloogi.

Väljavõte geckodriver-v0.26.0-linux64.tar.gz arhiiv asukohast ~/Allalaadimised kataloogi autojuhid/ oma projekti kataloogi, sisestades järgmise käsu:

$tõrva -xzf~/Allalaadimised/geckodriver-v0.26.0-linux64.tar.gz-Cautojuhid/

Kui Firefox Gecko draiverite arhiiv on välja võetud, uus geko juht binaarfail tuleks luua kaustas autojuhid/ oma projekti kataloogi, nagu näete alloleval ekraanipildil.

Selenium Firefox Gecko draiveri testimine

Selles jaotises näitan teile, kuidas seadistada oma esimene Selenium Pythoni skript, et testida, kas Firefox Gecko draiver töötab.

Esiteks avage projekti kataloog python-selenium-basic/ oma lemmik IDE või toimetajaga. Selles artiklis kasutan Visual Studio koodi.

Looge uus Pythoni skript ex01.py ja tippige skripti järgmised read.

alatesseleenimportveebidraiver
alatesseleen.veebidraiver.levinud.võtmed importVõtmed
alates aega importmagama
brauser=veebidraiver.Firefox(käivitatav_tee='./drivers/geckodriver')
brauser.saada(„http://www.google.com”)
magama(5)
brauser.lõpetage()

Kui olete lõpetanud, salvestage ex01.py Pythoni skript.

Selgitan koodi selle artikli hilisemas osas.

Järgmisel real konfigureeritakse Selenium kasutama Firefoxi Gecko draiverit autojuhid/ oma projekti kataloog.

Et testida, kas Firefoxi geko draiver töötab koos seleeniga, käivitage järgmine ex01.py Pythoni skript:

$ python3 ex01.py

Firefoxi veebibrauser peaks automaatselt külastama veebisaiti Google.com ja sulgema end 5 sekundi pärast. Kui see juhtub, töötab Selenium Firefox Gecko draiver õigesti.

Chrome'i veebidraiveri installimine

Chrome'i veebidraiver võimaldab teil Seleeni abil Google Chrome'i veebibrauserit juhtida või automatiseerida.

Peate alla laadima sama Chrome'i veebidraiveri versiooni, mis teie Google Chrome'i veebibrauser.

Google Chrome'i veebibrauseri versiooninumbri leidmiseks külastage veebisaiti chrome: // settings/help Google Chrome'is. Versiooni number peaks olema Teave Chrome'i kohta jaotis, nagu näete alloleval ekraanipildil.

Minu puhul on versiooni number 83.0.4103.116 . Versiooninumbri kolm esimest osa ( 83,0,4103 , minu puhul) peab vastama Chrome'i veebidraiveri versiooni numbri kolmele esimesele osale.

Chrome'i veebidraiveri allalaadimiseks külastage ametlik Chrome'i draiveri allalaadimisleht .

Aastal Praegused väljaanded jaotisest on saadaval Chrome'i veebidraiver Google Chrome'i veebibrauseri uusimate versioonide jaoks, nagu näete alloleval ekraanipildil.

Kui teie kasutatav Google Chrome'i versioon pole kaustas Praegused väljaanded jaotis, kerige veidi alla ja peaksite leidma soovitud versiooni.

Kui klõpsate õigel Chrome'i veebidraiveri versioonil, peaks see viima teid järgmisele lehele. Klõpsake chromedriver_linux64.zip link, nagu on märgitud alloleval ekraanipildil.

Nüüd tuleks Chrome'i veebidraiveri arhiiv alla laadida.

Chrome'i veebidraiveri arhiiv tuleks nüüd alla laadida kaustast ~/Allalaadimised kataloogi.

Saate välja võtta chromedriver-linux64.zip arhiiv asukohast ~/Allalaadimised kataloogi autojuhid/ oma projekti kataloogi järgmise käsuga:

$ unzip~/Allalaadimised/chromedriver_linux64.tõmblukk-d draiverid/

Kui Chrome'i veebidraiveri arhiiv on välja võetud, uus kroomitud draiver binaarfail tuleks luua kaustas autojuhid/ oma projekti kataloogi, nagu näete alloleval ekraanipildil.

Selenium Chrome'i veebidraiveri testimine

Selles jaotises näitan teile, kuidas seadistada oma esimene Selenium Pythoni skript, et testida, kas Chrome'i veebidraiver töötab.

Esiteks looge uus Pythoni skript ex02.py ja tippige skripti järgmised koodiridad.

alatesseleenimportveebidraiver
alatesseleen.veebidraiver.levinud.võtmed importVõtmed
alates aega importmagama
brauser=veebidraiver.Chrome(käivitatav_tee='./drivers/chromedriver')
brauser.saada(„http://www.google.com”)
magama(5)
brauser.lõpetage()

Kui olete lõpetanud, salvestage ex02.py Pythoni skript.

Selgitan koodi selle artikli hilisemas osas.

Järgmisel real konfigureeritakse Selenium kasutama Chrome'i veebidraiverit autojuhid/ oma projekti kataloog.

Et kontrollida, kas Chrome'i veebidraiver töötab koos seleeniga, käivitage ex02.py Pythoni skript järgmiselt:

$ python3 ex01.py

Google Chrome'i veebibrauser peaks automaatselt külastama veebisaiti Google.com ja sulgema end 5 sekundi pärast. Kui see juhtub, töötab Selenium Firefox Gecko draiver õigesti.

Veebi kraapimise alused seleeniga

Nüüdsest kasutan Firefoxi veebibrauserit. Soovi korral saate kasutada ka Chrome'i.

Põhiline Selenium Pythoni skript peaks välja nägema nagu alloleval ekraanipildil näidatud skript.

Esiteks importige seleeni veebidraiver alates seleen moodul.

Seejärel importige Võtmed alates selenium.webdriver.common.võtmed . See aitab teil saata klaviatuuri klahvivajutusi brauserisse, mille automatiseerite Seleniumist.

Järgmine rida loob a brauser objekti Firefoxi veebibrauseri jaoks, kasutades Firefoxi Gecko draiverit (Webdriver). Selle objekti abil saate juhtida Firefoxi brauseri toiminguid.

Veebisaidi või URL -i laadimiseks (laadin veebisaiti https://www.duckduckgo.com ), helistage saada () meetod brauser objekti Firefoxi brauseris.

Seleeni abil saate oma teste kirjutada, veebist sissekannet teha ja lõpuks brauseri sulgeda lõpetage () meetod brauser objekti.

Eespool on Selenium Pythoni skripti põhipaigutus. Kirjutate need read kõikidesse oma Selenium Pythoni skriptidesse.

Näide 1: veebilehe pealkirja printimine

See on lihtsaim näide seleeni kasutamisel. Selles näites trükime külastatava veebilehe pealkirja.

Looge uus fail ex04.py ja tippige sellesse järgmised koodiridad.

alatesseleenimportveebidraiver
alatesseleen.veebidraiver.levinud.võtmed importVõtmed

brauser=veebidraiver.Firefox(käivitatav_tee='./drivers/geckodriver')

brauser.saada('https://www.duckduckgo.com')
printida('Pealkiri: %s'% brauser.tiitel)
brauser.lõpetage()

Kui olete lõpetanud, salvestage fail.

Siin, brauser.pealkiri kasutatakse külastatud veebilehe pealkirjale ja print () funktsiooni kasutatakse tiitli printimiseks konsoolis.

Pärast jooksmist ex04.py skript, see peaks:

1) Avage Firefox
2) Laadige soovitud veebileht
3) Tooge lehe pealkiri
4) Printige pealkiri konsoolile
5) Lõpuks sulgege brauser

Nagu näete, ex04.py script on konsoolis kenasti veebilehe pealkirja trükkinud.

$ python3 ex04.py

Näide 2: mitme veebilehe pealkirjade printimine

Nagu eelmises näites, saate sama meetodit kasutada mitme veebilehe pealkirja printimiseks Pythoni silmuse abil.

Selle toimimise mõistmiseks looge uus Pythoni skript ex05.py ja tippige skripti järgmised koodiridad:

alatesseleenimportveebidraiver
alatesseleen.veebidraiver.levinud.võtmed importVõtmed

brauser=veebidraiver.Firefox(käivitatav_tee='./drivers/geckodriver')


URL -id= ['https://www.duckduckgo.com', 'https://linuxhint.com', 'https://yahoo.com']
eesturlsisseURL -id:
brauser.saada(url)
printida('Pealkiri: %s'% brauser.tiitel)
brauser.lõpetage()

Kui olete lõpetanud, salvestage Pythoni skript ex05.py .

Siin, URL -id loend säilitab iga veebilehe URL -i.

TO eest silmust kasutatakse iteratsiooniks läbi URL -id loendiüksused.

Selenium käsib igal kordamisel brauseril külastada url ja saate veebilehe pealkirja. Kui Selenium on veebilehe pealkirja välja võtnud, prinditakse see konsooli.

Käivitage Pythoni skript ex05.py , ja peaksite nägema iga veebilehe pealkirja URL -id nimekirja.

$ python3 ex05.py

See on näide sellest, kuidas Selenium saab sama ülesannet täita mitme veebilehe või veebisaidiga.

Näide 3: andmete väljavõtmine veebilehelt

Selles näites näitan teile Seleeni abil veebilehtedelt andmete ekstraheerimise põhitõdesid. Seda nimetatakse ka veebi kraapimiseks.

Esiteks külastage Random.org link Firefoxist. Leht peaks genereerima juhusliku stringi, nagu näete alloleval ekraanipildil.

Juhuslike stringi andmete ekstraheerimiseks seleeni abil peate teadma ka andmete HTML -i esitusviisi.

Et näha, kuidas juhusliku stringi andmed on HTML -is esindatud, valige juhusliku stringi andmed ja vajutage hiire paremat nuppu (RMB) ning klõpsake Kontrollige elementi (Q) , nagu on märgitud alloleval ekraanipildil.

Andmete HTML -esitus tuleks kuvada kaustas Inspektor vahekaart, nagu näete alloleval ekraanipildil.

Võite klõpsata ka nupul Kontrollige ikooni ( ) lehelt andmetega tutvumiseks.

Klõpsake kontrollimise ikooni () ja hõljutage kursorit juhuslike stringiandmete kohal, mida soovite ekstraheerida. Andmete HTML -esitus tuleks kuvada nagu varem.

Nagu näete, on juhusliku stringi andmed pakitud HTML -i eest silt ja sisaldab klassi andmed .

Nüüd, kui me teame nende andmete HTML -esitust, mida me soovime ekstraheerida, loome Pythoni skripti andmete ekstraheerimiseks seleeni abil.

Looge uus Pythoni skript ex06.py ja tippige skripti järgmised koodiridad

alatesseleenimportveebidraiver
alatesseleen.veebidraiver.levinud.võtmed importVõtmed

brauser=veebidraiver.Firefox(käivitatav_tee='./drivers/geckodriver')

brauser.saada(„https://www.random.org/strings/?num=1&len=20&digits
= on & upperalpha = on & loweralpha = on & unique = on & format = html & rnd = new '
)

dataElement=brauser.find_element_by_css_selector('pre.data')
printida(dataElement.teksti)
brauser.lõpetage()

Kui olete lõpetanud, salvestage ex06.py Pythoni skript.

Siin, browser.get () meetod laadib veebilehe Firefoxi brauserisse.

The browser.find_element_by_css_selector () meetod otsib konkreetse elemendi lehe HTML -koodist ja tagastab selle.

Sel juhul oleks element eelandmed , eest märgend, millel on klassi nimi andmed .

Allpool, eelandmed element on salvestatud kausta dataElement muutuja.

Seejärel prindib skript valitud teksti sisu eelandmed element.

Kui käivitate ex06.py Pythoni skripti abil peaks see veebilehelt ekstraheerima juhusliku stringi andmed, nagu näete alloleval ekraanipildil.

$ python3 ex06.py

Nagu näete, käivitan iga kord ex06.py Pythoni skripti abil ekstraheerib see veebilehelt erinevaid juhuslike stringi andmeid.

Näide 4: Andmete loendi väljavõtmine veebilehelt

Eelmine näide näitas teile, kuidas seleeni abil veebilehelt üks andmeelement välja võtta. Selles näites näitan teile, kuidas kasutada seleeni veebilehelt andmete loendi väljavõtmiseks.

Esiteks külastage juhusliku nime- generaator.info oma Firefoxi veebibrauserist. See veebisait loob iga kord lehe uuesti laadimisel kümme juhuslikku nime, nagu näete alloleval ekraanipildil. Meie eesmärk on need juhuslikud nimed ekstraheerida, kasutades seleeni.

Kui vaatate nimekirja lähemalt, näete, et see on järjestatud nimekiri ( surema silt). The surema silt sisaldab ka klassi nime nimekiri . Kõik juhuslikud nimed on esitatud loendiüksusena ( juures silt) surema silt.

Nende juhuslike nimede eraldamiseks looge uus Pythoni skript ex07.py ja tippige skripti järgmised koodiridad.

alatesseleenimportveebidraiver
alatesseleen.veebidraiver.levinud.võtmed importVõtmed

brauser=veebidraiver.Firefox(käivitatav_tee='./drivers/geckodriver')

brauser.saada('http://random-name-generator.info/')

nimekiri=brauser.find_elements_by_css_selector('ol.nameList li')

eestnimisissenimekiri:
printida(nimi.teksti)

brauser.lõpetage()

Kui olete lõpetanud, salvestage ex07.py Pythoni skript.

Siin, browser.get () meetod laadib juhuslike nimede generaatori veebilehe Firefoxi brauserisse.

The browser.find_elements_by_css_selector () meetod kasutab CSS -valijat ol.nimiList li et kõik üles leida juures elemendid selle sees surema klassi nimega silt nimekiri . Olen salvestanud kõik valitud juures elemendid nimekiri muutuja.

TO eest silmust kasutatakse iteratsiooniks läbi nimekiri nimekiri juures elemente. Iga iteratsiooni puhul on selle sisu juures element trükitakse konsoolile.

Kui käivitate ex07.py Pythoni skriptiga, toob see kõik juhuslikud nimed veebilehelt ja prindib selle ekraanile, nagu näete alloleval ekraanipildil.

$ python3 ex07.py

Kui käivitate skripti teist korda, peaks see tagastama uue juhuslike kasutajanimede loendi, nagu näete alloleval ekraanipildil.

Näide 5: vormi esitamine - otsimine DuckDuckGo kaudu

See näide on sama lihtne kui esimene näide. Selles näites külastan DuckDuckGo otsingumootorit ja otsin terminit seleen hq kasutades seleeni.

Esiteks külastage DuckDuckGo otsingumootor Firefoxi veebibrauserist.

Kui kontrollite otsingu sisestusvälja, peaks sellel olema id search_form_input_homepage , nagu näete alloleval ekraanipildil.

Nüüd looge uus Pythoni skript ex08.py ja tippige skripti järgmised koodiridad.

alatesseleenimportveebidraiver
alatesseleen.veebidraiver.levinud.võtmed importVõtmed
brauser=veebidraiver.Firefox(käivitatav_tee='./drivers/geckodriver')
brauser.saada('https://duckduckgo.com/')
searchInput=brauser.find_element_by_id('search_form_input_homepage')
searchInput.send_keys('seleeni hq'+ Võtmed.SISENEMA)

Kui olete lõpetanud, salvestage ex08.py Pythoni skript.

Siin, browser.get () meetod laadib DuckDuckGo otsingumootori kodulehe Firefoxi veebibrauserisse.

The browser.find_element_by_id () meetod valib sisend -elemendi ID -ga search_form_input_homepage ja salvestab selle kausta searchInput muutuja.

The searchInput.send_keys () meetodit kasutatakse klahvivajutuse andmete saatmiseks sisestusväljale. Selles näites saadab see stringi seleen hq ja klahvi abil vajutatakse sisestusklahvi Võtmed.SISEND konstantne.

Niipea kui DuckDuckGo otsingumootor saab klahvi Enter vajutada ( Võtmed.SISEND ), see otsib ja kuvab tulemuse.

Käivitage ex08.py Pythoni skript järgmiselt:

$ python3 ex08.py

Nagu näete, külastas DuckDuckGo otsingumootorit Firefoxi veebibrauser.

See trükiti automaatselt seleen hq otsingukasti.

Niipea kui brauser sai sisestusklahvi, vajutage ( Võtmed.SISEND ), see näitas otsingutulemust.

Näide 6: vormi esitamine saidil W3Schools.com

Näites 5 oli DuckDuckGo otsingumootori vormi esitamine lihtne. Piisas vaid sisestusklahvi vajutamisest. Kuid see ei kehti kõigi vormide kohta. Selles näites näitan teile keerukamat vormitöötlust.

Esiteks külastage W3Schools.com lehe HTML -vormid Firefoxi veebibrauserist. Kui leht on laaditud, peaksite nägema näidisvormi. Selles vormis esitame selle näite.

Kui kontrollite vormi, siis Eesnimi sisendväljal peaks olema id f nimi , Perekonnanimi sisendväljal peaks olema id lnimi , ja Esita nupp peaks olema tüüpi Esita , nagu näete alloleval ekraanipildil.

Selle vormi esitamiseks seleeni abil looge uus Pythoni skript ex09.py ja tippige skripti järgmised koodiridad.

alatesseleenimportveebidraiver
alatesseleen.veebidraiver.levinud.võtmed importVõtmed
brauser=veebidraiver.Firefox(käivitatav_tee='./drivers/geckodriver')
brauser.saada(„https://www.w3schools.com/html/html_forms.asp”)
f nimi=brauser.find_element_by_id('fname')
f nimi.selge()
f nimi.send_keys('Shahriar')
lnimi=brauser.find_element_by_id('nimi')
lnimi.selge()
lnimi.send_keys('Shovon')
applyButton=brauser.find_element_by_css_selector('sisend [tüüp =' esita ']')
applyButton.send_keys(Võtmed.SISENEMA)

Kui olete lõpetanud, salvestage ex09.py Pythoni skript.

Siin, browser.get () meetod avab Firefoxi veebibrauseris lehe W3schools HTML -vormid.

The browser.find_element_by_id () meetod leiab sisendväljad ID järgi f nimi ja lnimi ja see salvestab need kausta f nimi ja lnimi vastavalt muutujad.

The fname.clear () ja lname.clear () meetodid kustutavad vaikimisi eesnime (John) f nimi väärtus ja perekonnanimi (Doe) lnimi väärtus sisendväljadelt.

The fname.send_keys () ja lname.send_keys () meetodite tüüp Shahriar ja Shovon aastal Eesnimi ja Perekonnanimi sisendväljad vastavalt.

The browser.find_element_by_css_selector () meetod valib Esita nupp vormist ja salvestab selle kausta applyButton muutuja.

The submittedButton.send_keys () meetod saadab sisestusklahvi vajutades ( Võtmed.SISEND ) juurde Esita nupp vormist. See toiming esitab vormi.

Käivitage ex09.py Pythoni skript järgmiselt:

$ python3 ex09.py

Nagu näete, on vorm automaatselt esitatud õigete sisenditega.

Järeldus

See artikkel peaks aitama teil alustada Python 3 brauseri Selenium testimise, veebi automatiseerimise ja sissekannetega raamatukogude alustamist. Lisateabe saamiseks vaadake ametlik Selenium Pythoni dokumentatsioon .