Uvod u selen u Pythonu 3

Introduction Selenium Python 3



Selenium je okvir za testiranje web aplikacija. Selenium automatizira preglednik, poput Chromea ili Firefoxa, za izvođenje testova na željenoj web stranici. Selen je također vrlo moćan alat za struganje weba. Selenium podržava JavaScript i sve moderne značajke preglednika. Ovaj je alat vrlo učinkovit pri izvlačenju informacija s web stranica.

Ovaj članak će vam pokazati kako postaviti Selenium na svoju distribuciju Linuxa (tj. Ubuntu), kao i kako izvesti osnovnu web automatizaciju i uklanjanje weba s bibliotekom Selenium Python 3.







Preduvjeti

Da biste isprobali naredbe i primjere korištene u ovom članku, morate imati sljedeće:



1) Linux distribucija (po mogućnosti Ubuntu) instalirana na vašem računalu.
2) Python 3 instaliran na vašem računalu.
3) PIP 3 instaliran na vašem računalu.
4) Web preglednik Google Chrome ili Firefox instaliran na vašem računalu.



Na stranici možete pronaći mnoge članke o ovim temama LinuxHint.com . Svakako pogledajte ove članke ako vam je potrebna dodatna pomoć.





Priprema virtualnog okruženja Python 3 za projekt

Virtualno okruženje Python koristi se za stvaranje izoliranog direktorija Python projekta. Python moduli koje instalirate pomoću PIP -a bit će instalirani samo u direktoriju projekta, a ne globalno.

Python virtualenv Modul se koristi za upravljanje Python virtualnim okruženjima.



Možete instalirati Python virtualenv modul globalno koristeći PIP 3, kako slijedi:

$ sudo pip3 instalirajte virtualenv

PIP3 će preuzeti i globalno instalirati sve potrebne module.

U ovom trenutku, Python virtualenv modul treba instalirati globalno.

Izradite direktorij projekta python-selenium-basic/ u vašem trenutnom radnom direktoriju, kako slijedi:

$ mkdir -pv python-selenium-basic/upravljački programi

Idite do novostvorenog direktorija projekta python-selenium-basic/ , kako slijedi:

$CDpython-selenium-basic/

Izradite Python virtualno okruženje u direktoriju projekta slijedećom naredbom:

$ virtualenv.env

Python virtualno okruženje sada bi trebalo biti stvoreno u direktoriju vašeg projekta. '

Aktivirajte Python virtualno okruženje u direktoriju projekta pomoću sljedeće naredbe:

$ izvor.env/bin/aktiviraj

Kao što vidite, virtualno okruženje Python aktivirano je za ovaj direktorij projekta.

Instaliranje biblioteke Selenium Python

Knjižnica Selenium Python dostupna je u službenom spremištu Python PyPI.

Ovu biblioteku možete instalirati pomoću PIP -a 3, na sljedeći način:

$ pip3 instalirajte selen

Sada bi trebala biti instalirana biblioteka Selenium Python.

Sada kada je biblioteka Selenium Python instalirana, sljedeće što morate učiniti je instalirati web upravljački program za vaš omiljeni web preglednik. U ovom članku ću vam pokazati kako instalirati upravljačke programe za Firefox i Chrome za Selenium.

Instaliranje upravljačkog programa Firefox Gecko

Firefox Gecko upravljački program omogućuje vam upravljanje ili automatizaciju Firefox web preglednika pomoću Selenium.

Za preuzimanje upravljačkog programa Firefox Gecko posjetite GitHub objavljuje stranicu mozilla/geckodrivera iz web preglednika.

Kao što vidite, v0.26.0 najnovija je verzija Firefox Gecko upravljačkog programa u vrijeme pisanja ovog članka.

Za preuzimanje Firefox Gecko upravljačkog programa pomaknite se prema dolje i kliknite na arhivu tar.gz za Linux geckodriver, ovisno o arhitekturi vašeg operacijskog sustava.

Ako koristite 32-bitni operacijski sustav, kliknite na geckodriver-v0.26.0-linux32.tar.gz veza.

Ako koristite 64-bitni operacijski sustav, kliknite na geckodriver-v0.26.0-linuxx64.tar.gz veza.

U mom ću slučaju preuzeti 64-bitnu verziju upravljačkog programa Firefox Gecko.

Vaš preglednik trebao bi od vas zatražiti spremanje arhive. Odaberi Spremiti datoteku a zatim kliknite u redu .

Arhivu upravljačkog programa Firefox Gecko potrebno je preuzeti u ~/Preuzimanja imenik.

Izdvojite geckodriver-v0.26.0-linux64.tar.gz arhiva iz ~/Preuzimanja imenik u vozači/ direktorij vašeg projekta unosom sljedeće naredbe:

$katran -xzf~/Preuzimanja/geckodriver-v0.26.0-linux64.tar.gz-Cvozači/

Nakon što se izdvoji arhiva upravljačkog programa Firefox Gecko, nova vozač gekona binarnu datoteku treba stvoriti u vozači/ direktorij vašeg projekta, kao što možete vidjeti na slici ispod.

Testiranje upravljačkog programa Selenium Firefox Gecko

U ovom odjeljku pokazat ću vam kako postaviti prvu skriptu Selenium Python kako biste provjerili radi li Firefox Gecko upravljački program.

Prvo otvorite direktorij projekta python-selenium-basic/ s vašim omiljenim IDE -om ili uređivačem. U ovom članku koristit ću Visual Studio Code.

Izradite novu skriptu Python ex01.py i upišite sljedeće retke u skriptu.

izselenuvozwebdriver
izselen.webdriver.uobičajen.ključeve uvozKljučevi
iz vrijeme uvozspavati
preglednik=webdriver.Firefox(izvršni_put='./drivers/geckodriver')
preglednik.dobiti('http://www.google.com')
spavati(5)
preglednik.prestati()

Kada završite, spremite ex01.py Python skripta.

Objasnit ću kôd u kasnijem odjeljku ovog članka.

Sljedeći redak konfigurira Selenium za upotrebu upravljačkog programa Firefox Gecko iz vozači/ imenik vašeg projekta.

Da biste provjerili radi li Firefox Gecko Driver radi sa Selenium, pokrenite sljedeće ex01.py Python skripta:

$ python3 ex01.py

Web preglednik Firefox trebao bi automatski posjetiti Google.com i zatvoriti se nakon 5 sekundi. Ako se to dogodi, upravljački program Selenium Firefox Gecko radi ispravno.

Instaliranje Chrome web upravljačkog programa

Chrome web upravljački program omogućuje vam upravljanje ili automatizaciju web preglednika Google Chrome pomoću Selenium.

Morate preuzeti istu verziju upravljačkog programa Chrome za web kao i web -preglednik Google Chrome.

Broj verzije vašeg web preglednika Google Chrome posjetite chrome: // postavke/pomoć u pregledniku Google Chrome. Broj verzije trebao bi biti u O Chromeu odjeljak, kao što možete vidjeti na snimci zaslona u nastavku.

U mom slučaju broj verzije je 83.0.4103.116 . Prva tri dijela broja verzije ( 83.0.4103 , u mom slučaju) moraju odgovarati prva tri dijela broja verzije upravljačkog programa Chrome Web.

Za preuzimanje Chrome web upravljačkog programa posjetite službena stranica za preuzimanje upravljačkog programa Chrome .

U Trenutna izdanja odjeljak, Chrome web upravljački program za najnovija izdanja web preglednika Google Chrome bit će dostupan, kao što možete vidjeti na snimci zaslona u nastavku.

Ako verzija Google Chromea koju koristite nije u Trenutna izdanja odjeljak, pomaknite se prema dolje i trebali biste pronaći željenu verziju.

Nakon što kliknete na ispravnu verziju Chrome web upravljačkog programa, trebala bi vas odvesti na sljedeću stranicu. Klikni na chromedriver_linux64.zip link, kako je naznačeno na slici ispod.

Arhivu Chrome web upravljačkog programa sada bi trebalo preuzeti.

Arhivu Chrome web upravljačkog programa sada bi trebalo preuzeti u ~/Preuzimanja imenik.

Možete izdvojiti chromedriver-linux64.zip arhiva iz ~/Preuzimanja imenik u vozači/ direktorij vašeg projekta sa sljedećom naredbom:

$ otpakirajte~/Preuzimanja/chromedriver_linux64.zatvarač-d vozači/

Nakon što je arhiva Chrome web upravljačkog programa izdvojena, nova kromirani upravljač binarnu datoteku treba stvoriti u vozači/ direktorij vašeg projekta, kao što možete vidjeti na slici ispod.

Testiranje Selenium Chrome web upravljačkog programa

U ovom odjeljku pokazat ću vam kako postaviti svoju prvu skriptu Selenium Python kako biste provjerili radi li Chrome web upravljački program.

Prvo stvorite novu skriptu Python ex02.py i upišite sljedeće retke kodova u skriptu.

izselenuvozwebdriver
izselen.webdriver.uobičajen.ključeve uvozKljučevi
iz vrijeme uvozspavati
preglednik=webdriver.Krom(izvršni_put='./drivers/chromedriver')
preglednik.dobiti('http://www.google.com')
spavati(5)
preglednik.prestati()

Kada završite, spremite ex02.py Python skripta.

Objasnit ću kôd u kasnijem odjeljku ovog članka.

Sljedeći redak konfigurira Selenium za upotrebu Chrome web upravljačkog programa iz vozači/ imenik vašeg projekta.

Da biste provjerili radi li Chrome web upravljački program sa Selenium, pokrenite ex02.py Python skripta, kako slijedi:

$ python3 ex01.py

Web preglednik Google Chrome trebao bi automatski posjetiti Google.com i zatvoriti se nakon 5 sekundi. Ako se to dogodi, upravljački program Selenium Firefox Gecko radi ispravno.

Osnove struganja weba selenom

Od sada ću koristiti web preglednik Firefox. Ako želite, možete koristiti i Chrome.

Osnovna skripta Selenium Python trebala bi izgledati kao skripta prikazana na slici ispod.

Prvo, uvezite selen webdriver od selen modul.

Zatim uvezite Ključevi iz selen.webdriver.com zajednički.ključevi . To će vam pomoći da pritisnete tipke na tipkovnici u preglednik koji automatizirate iz Selenium.

Sljedeći redak stvara a preglednik objekt za web preglednik Firefox pomoću upravljačkog programa Firefox Gecko (Webdriver). Pomoću ovog objekta možete kontrolirati radnje preglednika Firefox.

Za učitavanje web stranice ili URL -a (učitavat ću web stranicu https://www.duckduckgo.com ), nazovite dobiti() metoda preglednik objekt u vašem pregledniku Firefox.

Koristeći Selenium, možete napisati svoje testove, izvesti uklanjanje weba i na kraju zatvoriti preglednik pomoću prestati() metoda preglednik objekt.

Gore se nalazi osnovni izgled skripte Selenium Python. Ove ćete redove pisati u svim svojim skriptama Selenium Python.

Primjer 1: Ispis naslova web stranice

Ovo će biti najlakši primjer o kojem se raspravlja pomoću selena. U ovom primjeru ispisat ćemo naslov web stranice koju ćemo posjetiti.

Kreirajte novu datoteku ex04.py i upišite sljedeće redove kodova u nju.

izselenuvozwebdriver
izselen.webdriver.uobičajen.ključeve uvozKljučevi

preglednik=webdriver.Firefox(izvršni_put='./drivers/geckodriver')

preglednik.dobiti('https://www.duckduckgo.com')
ispisati('Naslov: %s'% preglednik.titula)
preglednik.prestati()

Nakon što završite, spremite datoteku.

Evo, preglednik.naslov koristi se za pristup naslovu posjećene web stranice i ispis () funkcija će se koristiti za ispis naslova u konzoli.

Nakon pokretanja ex04.py skripta, trebala bi:

1) Otvorite Firefox
2) Učitajte željenu web stranicu
3) Dohvatite naslov stranice
4) Ispišite naslov na konzoli
5) I na kraju, zatvorite preglednik

Kao što vidite, ex04.py script je lijepo ispisao naslov web stranice u konzoli.

$ python3 ex04.py

Primjer 2: Ispis naslova više web stranica

Kao i u prethodnom primjeru, možete koristiti istu metodu za ispis naslova više web stranica pomoću Python petlje.

Da biste razumjeli kako to funkcionira, izradite novu skriptu Python ex05.py i upišite sljedeće retke koda u skriptu:

izselenuvozwebdriver
izselen.webdriver.uobičajen.ključeve uvozKljučevi

preglednik=webdriver.Firefox(izvršni_put='./drivers/geckodriver')


URL -ovi= ['https://www.duckduckgo.com', 'https://linuxhint.com', 'https://yahoo.com']
zaurluurl:
preglednik.dobiti(url)
ispisati('Naslov: %s'% preglednik.titula)
preglednik.prestati()

Kad završite, spremite Python skriptu ex05.py .

Evo, URL -ovi popis čuva URL svake web stranice.

DO za petlja se koristi za ponavljanje kroz URL -ovi stavke popisa.

Na svakoj iteraciji, Selenium govori pregledniku da posjeti url i dobiti naslov web stranice. Nakon što Selenium izdvoji naslov web stranice, ispisuje se u konzoli.

Pokrenite Python skriptu ex05.py , a naslov svake web stranice trebali biste vidjeti u URL -ovi popis.

$ python3 ex05.py

Ovo je primjer kako Selenium može izvesti isti zadatak s više web stranica ili web stranica.

Primjer 3: Izdvajanje podataka s web stranice

U ovom primjeru pokazat ću vam osnove vađenja podataka s web stranica pomoću Selenium. To je također poznato kao struganje weba.

Prvo posjetite Random.org link iz Firefoxa. Stranica bi trebala generirati slučajni niz, kao što možete vidjeti na snimci zaslona u nastavku.

Da biste izvukli podatke slučajnog niza pomoću Selenium -a, morate znati i HTML prikaz podataka.

Da biste vidjeli kako su podaci slučajnog niza predstavljeni u HTML -u, odaberite podatke slučajnog niza i pritisnite desnu tipku miša (RMB) i kliknite na Pregledajte element (Q) , kako je naznačeno na slici ispod.

HTML prikaz podataka trebao bi biti prikazan u Inspektor karticu, kao što možete vidjeti na snimci zaslona u nastavku.

Također možete kliknuti na Ikona pregleda ( ) za pregled podataka sa stranice.

Pritisnite ikonu inspekcije () i zadržite pokazivač iznad podataka slučajnog niza koje želite izdvojiti. HTML prikaz podataka trebao bi biti prikazan kao i prije.

Kao što vidite, podaci slučajnog niza umotani su u HTML za oznaku i sadrži klasu podaci .

Sada kada znamo HTML prikaz podataka koje želimo izdvojiti, stvorit ćemo Python skriptu za izdvajanje podataka pomoću Selenium.

Izradite novu skriptu Python ex06.py i upišite sljedeće retke kodova u skriptu

izselenuvozwebdriver
izselen.webdriver.uobičajen.ključeve uvozKljučevi

preglednik=webdriver.Firefox(izvršni_put='./drivers/geckodriver')

preglednik.dobiti('https://www.random.org/strings/?num=1&len=20&digits
= uključeno & upperalpha = uključeno & loweralpha = uključeno & jedinstveno = uključeno & format = html & rnd = novo '
)

dataElement=preglednik.find_element_by_css_selector('pre.data')
ispisati(dataElement.tekst)
preglednik.prestati()

Kada završite, spremite ex06.py Python skripta.

Evo, browser.get () metoda učitava web stranicu u pregledniku Firefox.

The browser.find_element_by_css_selector () method pretražuje HTML kod stranice za određeni element i vraća ga.

U ovom slučaju element bi bio pre.podaci , za oznaku koja ima naziv klase podaci .

Ispod se nalazi pre.podaci element je pohranjen u dataElement promjenjivo.

Skripta zatim ispisuje tekstualni sadržaj odabranog pre.podaci element.

Ako pokrenete ex06.py Python skripta, trebala bi izdvojiti podatke slučajnog niza s web stranice, kao što možete vidjeti na snimci zaslona u nastavku.

$ python3 ex06.py

Kao što vidite, svaki put kad pokrenem ex06.py Python skripta, izvlači različite podatke slučajnog niza s web stranice.

Primjer 4: Izdvajanje popisa podataka s web stranice

Prethodni primjer pokazao vam je kako izdvojiti jedan element podataka s web stranice pomoću Selenium. U ovom primjeru pokazat ću vam kako koristiti Selenium za izdvajanje popisa podataka s web stranice.

Prvo posjetite generator nasumičnih imena.info iz vašeg web preglednika Firefox. Ova web stranica generirat će deset nasumičnih imena svaki put kad ponovno učitate stranicu, kao što možete vidjeti na slici ispod. Naš cilj je izdvojiti te nasumične nazive pomoću selena.

Ako pomnije pregledate popis imena, možete vidjeti da se radi o uređenom popisu ( umrijeti označiti). The umrijeti oznaka također uključuje naziv klase lista imena . Svaki od nasumičnih naziva predstavljen je kao stavka popisa ( kod oznaka) unutar umrijeti označiti.

Da biste izvukli ta slučajna imena, stvorite novu skriptu Python ex07.py i upišite sljedeće retke kodova u skriptu.

izselenuvozwebdriver
izselen.webdriver.uobičajen.ključeve uvozKljučevi

preglednik=webdriver.Firefox(izvršni_put='./drivers/geckodriver')

preglednik.dobiti('http://random-name-generator.info/')

lista imena=preglednik.find_elements_by_css_selector('ol.nameList li')

zaImeulista imena:
ispisati(Ime.tekst)

preglednik.prestati()

Kada završite, spremite ex07.py Python skripta.

Evo, browser.get () metoda učitava web stranicu generatora slučajnih imena u pregledniku Firefox.

The browser.find_elements_by_css_selector () metoda koristi CSS selektor ol.nameList li da pronađe sve kod elementi unutar umrijeti oznaku s imenom klase lista imena . Spremio sam sve odabrane kod elementi u lista imena promjenjivo.

DO za petlja se koristi za ponavljanje kroz lista imena popis kod elementi. U svakoj iteraciji sadržaj kod element je ispisan na konzoli.

Ako pokrenete ex07.py Python skripta, dohvatit će sva nasumična imena s web stranice i ispisati je na ekranu, kao što možete vidjeti na slici ispod.

$ python3 ex07.py

Ako skriptu pokrenete drugi put, trebala bi vratiti novi popis nasumičnih korisničkih imena, kao što možete vidjeti na slici ispod.

Primjer 5: Slanje obrasca - pretraživanje na DuckDuckGo -u

Ovaj je primjer jednako jednostavan kao i prvi primjer. U ovom primjeru posjetit ću tražilicu DuckDuckGo i pretražiti pojam selen hq pomoću selena.

Prvo posjetite DuckDuckGo tražilica iz web preglednika Firefox.

Ako pregledate polje za unos pretraživanja, ono bi trebalo imati ID search_form_input_homepage , kao što možete vidjeti na slici ispod.

Sada stvorite novu skriptu Python ex08.py i upišite sljedeće retke kodova u skriptu.

izselenuvozwebdriver
izselen.webdriver.uobičajen.ključeve uvozKljučevi
preglednik=webdriver.Firefox(izvršni_put='./drivers/geckodriver')
preglednik.dobiti('https://duckduckgo.com/')
searchInput=preglednik.find_element_by_id('search_form_input_homepage')
searchInput.send_ključevi('selen hq'+ Ključevi.UNESI)

Kada završite, spremite ex08.py Python skripta.

Evo, browser.get () metoda učitava početnu stranicu tražilice DuckDuckGo u web pregledniku Firefox.

The browser.find_element_by_id () method odabire ulazni element s id -om search_form_input_homepage i pohranjuje ga u searchInput promjenjivo.

The searchInput.send_keys () Metoda se koristi za slanje podataka o pritisku tipke u polje za unos. U ovom primjeru šalje niz selen hq , a tipka Enter pritisnuta je pomoću Ključevi.ENTER konstantno.

Čim tražilica DuckDuckGo primi tipku Enter ( Ključevi.ENTER ), traži i prikazuje rezultat.

Pokrenite ex08.py Python skripta, kako slijedi:

$ python3 ex08.py

Kao što vidite, web preglednik Firefox posjetio je tražilicu DuckDuckGo.

Automatski je otkucano selen hq u tekstualnom okviru za pretraživanje.

Čim je preglednik primio tipku Enter, pritisnite ( Ključevi.ENTER ), prikazao je rezultat pretraživanja.

Primjer 6: Podnošenje obrasca na W3Schools.com

U primjeru 5, DuckDuckGo obrazac za tražilicu bio je lak za podnošenje. Sve što ste trebali učiniti je pritisnuti tipku Enter. No, to neće biti slučaj za sve podneske. U ovom primjeru pokazat ću vam složenije rukovanje obrascima.

Prvo posjetite Stranica HTML obrasci na web stranici W3Schools.com iz web preglednika Firefox. Nakon što se stranica učita, trebali biste vidjeti primjer obrasca. Ovo je obrazac koji ćemo predati u ovom primjeru.

Ako pregledate obrazac, Ime polje za unos treba imati ID fname , Prezime polje za unos treba imati ID lname , i Gumb za slanje trebao imati tip podnijeti , kao što možete vidjeti na slici ispod.

Za slanje ovog obrasca pomoću Selenium -a stvorite novu skriptu Python ex09.py i upišite sljedeće retke kodova u skriptu.

izselenuvozwebdriver
izselen.webdriver.uobičajen.ključeve uvozKljučevi
preglednik=webdriver.Firefox(izvršni_put='./drivers/geckodriver')
preglednik.dobiti('https://www.w3schools.com/html/html_forms.asp')
fname=preglednik.find_element_by_id('fname')
fname.čisto()
fname.send_ključevi('Shahriar')
lname=preglednik.find_element_by_id('lname')
lname.čisto()
lname.send_ključevi('Shovon')
submitButton=preglednik.find_element_by_css_selector('input [type =' submit ']')
submitButton.send_ključevi(Ključevi.UNESI)

Kada završite, spremite ex09.py Python skripta.

Evo, browser.get () metoda otvara stranicu HTML obrazaca W3schools u web pregledniku Firefox.

The browser.find_element_by_id () metoda pronalazi polja za unos prema id -u fname i lname i pohranjuje ih u fname i lname varijablama.

The fname.clear () i lname.clear () metode brišu zadano ime (Ivan) fname vrijednost i prezime (Srna) lname vrijednost iz polja za unos.

The fname.send_keys () i lname.send_keys () vrste metoda Šahrijar i Shovon u Ime i Prezime polja za unos.

The browser.find_element_by_css_selector () metoda odabire Gumb za slanje obrasca i pohranjuje ga u submitButton promjenjivo.

The submitButton.send_keys () metoda šalje tipku Enter pritiskom ( Ključevi.ENTER ) prema Gumb za slanje oblika. Ova radnja predaje obrazac.

Pokrenite ex09.py Python skripta, kako slijedi:

$ python3 ex09.py

Kao što vidite, obrazac je automatski poslan s ispravnim podacima.

Zaključak

Ovaj bi vam članak trebao pomoći da započnete s testiranjem Selenium preglednika, web automatizacijom i knjižnicama za bilježenje weba u Pythonu 3. Više informacija potražite u službena Selenium Python dokumentacija .