Selenium

Naršyklės automatizavimas naudojant seleną („Python“)

Naršyklės automatizavimas naudojant seleną („Python“)
SELENIJA yra žiniatinklio ir atvirojo kodo įrankis, naudojamas valdyti žiniatinklio naršyklę daugeliu programavimo kalbų. Tai yra trečiosios šalies įrankis ir prieinamas daugeliui programavimo kalbų (pvz.,.g. „Java“, „Python“, C #, PHP ir kt.). Jis palaiko beveik visas naršykles. Šioje pamokoje apžvelgsime, kaip naudoti „Selenium“ su „Python“, nes „Python“ suteikia patogią aplinką naudoti šį įrankį. „Selenium API for Python“ leidžia jūsų programai tiesiogiai valdyti naršyklę panašiai kaip tai daro žmogus. Tai gali atidaryti naujus skirtukus jums, užpildyti informaciją, pateikti formas, spustelėti skirtingas nuorodas ir atlikti kitus panašius veiksmus. Čia pamatysime, kaip mes automatizuojame savo interneto naršyklę naudodami seleną su „Python“.

Seleno montavimas

Prieš naudojant SELENIJA modulis Python, mes turime jį įdiegti. Norėdami ją įdiegti, vykdykite šią komandą terminale.

pip montuoti seleną

ARBA

pip3 įdiekite seleną

Tai bus įdiegta SELENIJA modulis ir dabar jis yra paruoštas naudoti.

Žiniatinklio tvarkyklės

Prieš automatizuojant žiniatinklio naršyklę naudojant SELENIUM modulį, reikalinga pasirinktos naršyklės žiniatinklio tvarkyklė. Norėdami automatizuoti „Chrome“ naršyklę, turime turėti „Chrome“ žiniatinklio tvarkyklę. Kelias, kuriame yra žiniatinklio tvarkyklės failas, perduodamas kaip argumentas. Žiniatinklio tvarkyklė sąveikauja su interneto naršykle per protokolą. Norėdami atsisiųsti skirtingų naršyklių žiniatinklio tvarkykles, eikite į šią nuorodą.

https: // www.seleno kv.org / atsisiųsti /

Pradžia

Įdiegę reikiamus modulius, galite atidaryti python CLI ir pradėti žaisti su savo naršykle. Taigi pirmiausia importuokime žiniatinklio tvarkyklę ir kitus modulius, šie moduliai ir klasės leis jūsų „Python“ programai siųsti jūsų naršyklės klavišus ir kitą informaciją.

C: \ Vartotojai \ Usama Azad> python
„Python 3“.6.4 (v3.6.4: d48eceb, 2017 m. Gruodžio 19 d., 06:54:40) [MSC v.1900 64 bitų (AMD64)] „Win32“
Norėdami gauti daugiau informacijos, įveskite „pagalba“, „autorių teisės“, „kreditai“ arba „licencija“.
>>> iš seleno importo žiniatinklio tvarkyklės
>>> iš seleno.žiniatinklio tvarkyklė.paplitęs.raktai importuoja raktus
# kelias į jūsų „Chrome“ tvarkykles
>>> tvarkyklė = žiniatinklio tvarkyklė.„Chrome“ („C: \ chromedriver“)

Tai atvers jums naują „Chrome“ naršyklės langą. Dabar galite gauti seleno, kad apsilankytumėte bet kurioje svetainėje naudodamiesi .get () metodas. Šis metodas atidaro svetainę ir palaukia, kol ji bus įkelta, tada galėsite įvesti kitą komandą.

>>> vairuotojas.gauti ("https: // www.Facebook.com ")

Kaip rasti elementus tinklalapyje

Mes galime rasti konkretų elementą tinklalapyje, atlikdami šį metodą.

Elementų nustatymas naudojant seleną

Norėdami rasti elementus tinklalapyje, mes naudojame "rasti_elementasmetodas. Toliau pateikiamirasti_elementasmetodai, galimi SELENIJA.

Naudodami aukščiau nurodytus metodus, galime rasti elementą tinklalapyje ir naudoti jį savo automatikos kode.

Spustelėję skirtingus tinklalapio elementus

click () metodas selene gali būti naudojamas norint spustelėti skirtingas nuorodas ir mygtukų elementus, kuriuos radote naudodamiesi aukščiau pateiktais metodais. Pavyzdžiui, norite spustelėti „Pamiršta sąskaita?“„ Facebook “puslapyje

>>> nuorodos_ mygtukas = tvarkyklė.find_element_by_link_text ('Pamiršta sąskaita?„)
>>> nuorodos_ mygtukas.spustelėkite ()

Siųsti specialius raktus

Selenas taip pat turi modulį, leidžiantį siųsti specialius raktus (pvz.,.g, Enter, Escape, Page down, page up etc.) naršydami internete. Turite importuoti šį modulį naudodami šią komandą

>>> iš seleno.žiniatinklio tvarkyklė.paplitęs.raktai importuoja raktus

Pvz., Skaitote straipsnį „Wikipedia“ apie JAV istoriją, tačiau tingite po kurio laiko paspausti rodyklę žemyn. Galite automatizuoti siųsdami šį raktą į naršyklę naudodami „Selenium“

iš seleno importo žiniatinklio tvarkyklės
iš seleno.žiniatinklio tvarkyklė.paplitęs.raktai importuoja raktus
importo laikas
tvarkyklė = žiniatinklio tvarkyklė.„Chrome“ („C: \ chromedriver“)
# Atidarykite straipsnio nuorodą naudodami „get“ metodą
vairuotojas.gauti ("https: // lt.vikipedija.org / wiki / United_States ")
#Pradėkite nuo puslapio pradžios
elem = vairuotojas.find_element_by_tag_name ('html')
o tiesa:
 
laikas.miegas (5)
elem.send_keys (raktai.ŽEMYN)

Kaip automatizuoti naršyklę

Šiame skyriuje pamatysime, kaip automatizuoti savo interneto naršyklę, naudojant kai kuriuos naudojimo atvejus.

Automatiškai prisijunkite prie socialinės žiniasklaidos svetainių

Naudodamiesi žiniatinklio automatizavimu, jūs galite lengvai padaryti prisijungimo procesą automatinį. Jei reguliariai tikrinate savo socialinės žiniasklaidos svetaines tam tikru laiku (tarkime, 20 val.), Tai gerai automatizuoti šį procesą. Toliau pateikiamas kodas, skirtas automatizuoti registravimą dviejose socialinės žiniasklaidos svetainėse „facebook“ ir „twitter“ naudojant SELENIJA modulis „Python“.

# importuoti žiniatinklio tvarkyklę iš seleno modulio
iš seleno importo žiniatinklio tvarkyklės
 
# importuoja specialius raktus iš seleno
iš seleno.žiniatinklio tvarkyklė.paplitęs.raktai importuoja raktus
 
# kurti „vairuotojo“ objektą „Google-Chrome“
tvarkyklė = žiniatinklio tvarkyklė.„Chrome“ („kelias į„ Chrome “tvarkyklę“)
 
# maksimaliai padidinti langą
vairuotojas.maximize_window ()
 
# atidarymas facebook
vairuotojas.gauti ('http: // www.Facebook.com„)
 
# suraskite elementą „El. paštas arba telefonas“ naudodami atributą „id“
vartotojo vardas = tvarkyklė.find_element_by_id ('el. paštas')
 
# Įveskite „Facebook“ vartotojo vardą arba el. Pašto adresą
Vartotojo vardas.send_keys ('Įveskite vartotojo vardą / el. pašto adresą')
 
# suraskite elementą „Slaptažodis“ naudodami atributą „id“
passWord = tvarkyklė.find_element_by_id ('leidimas')
 
# įvesti „Facebook“ slaptažodį
Slaptažodis.send_keys ("Įveskite slaptažodį")
 
# suraskite elementą „prisijungimo mygtukas“ naudodami atributą „id“ ir paspauskite „Enter“
vairuotojas.find_element_by_id ('u_0_b').send_keys (raktai.ENTER)
 
# atidaryti naują „Twitter“ skirtuką
vairuotojas.execute_script ("langas.atidaryti ('http: // www.„twitter“.com ',' tab2 '); ")
 
# perėjimas prie naujo skirtuko
vairuotojas.switch_to_window ('tab2')
 
#locating elementas 'log in' ir paspaudimas ant jo
vairuotojas.find_element_by_xpath ('// * [@ id = "doc"] / div / div [1] / div [1] / div [2] / div [1]').spustelėkite ()
 
# rasti elementą „Telefonas, el. paštas arba vartotojo vardas“
vartotojo vardas = tvarkyklė.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / forma /
lauko rinkinys / div [1] / įvestis ')
 
# įveskite „Twitter“ vartotojo vardą
Vartotojo vardas.send_keys ('Įveskite vartotojo vardą')
 
# rasti elementą „Slaptažodis“
passWord = tvarkyklė.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / forma /
lauko rinkinys / div [2] / įvestis ')
# įveskite „Twitter“ slaptažodį
Slaptažodis.send_keys ('Įveskite slaptažodį')
# suraskite mygtuką „prisijungti“ ir spustelėkite jį
vairuotojas.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form / div [2] / mygtukas')
.spustelėkite ()

Aukščiau pateiktas kodas automatizuoja naršyklę prisijungti prie socialinės žiniasklaidos svetainių. Visų pirma mes sukūrėme savo mėgstamos naršyklės objektą. Šiuo naudojimo atveju „Chrome“ laikėme naršykle. Norėdami sukurti objektą, mes perėjome savo „chromedriver“ kelią kaip argumentą. Tada mes įvedėme „facebook“ URL ir prisijungėme prie „Facebook“, pasirinkdami elementus ir perdavę vartotojo vardą bei slaptažodį.

Po to atidarėme naują skirtuką ir įvedėme „twitter“ URL. Po to mes perėjome į naują skirtuką, nes kodo valdymas vis dar buvo pirmame skirtuke, nors antrasis skirtukas buvo atidarytas. Tada mes prisijungėme prie „Twitter“ pasirinkdami elementus ir perdavę vartotojo vardą bei slaptažodį.

Pirkimo internetu automatika

Kitas geras naršyklės automatizavimo pavyzdys galėtų būti internetinis pirkimas. Pavyzdžiui, norite nusipirkti fotoaparatą internetu, tačiau kainos yra per aukštos. Kasdien tikrinate, ar kaina yra jūsų diapazone, ar ne. Šią užduotį galima automatizuoti naudojant SELENIJA ir jūs galite išvengti kainos tikrinimo kasdien. Nurodytas kodas paštu jums praneš, ar jūsų pageidaujamo produkto kaina yra prieinama. Jei jūsų pageidaujamas produktas yra parduodamas, programa jums apie tai praneš el. Paštu.

# importuoti žiniatinklio tvarkyklę iš seleno modulio
iš seleno importo žiniatinklio tvarkyklės
 
# importuojantis smtplib modulis laiškams siųsti
importuoti smtplib
 
# apibrėžianti pašto funkciją informuoti el. paštu
def mail ():
 
# užmegzti ryšį su „Gmail“ serveriu su domeno vardu ir prievado numeriu. 
Kiekvienam el. Pašto paslaugų teikėjui tai skiriasi
jungtis = smtplib.SMTP ('smtp.gmail.com “, 587)
 
# pasisveikink su serveriu
ryšį.ehlo ()
 
# pradedamas užšifruotas TLS ryšys
ryšį.starttls ()
 
# prisijunkite prie „Gmail“ serverio naudodami savo pagrindinį adresą ir slaptažodį
ryšį.prisijungimas („siuntėjo pašto adresas“, „slaptažodis“)
 
# siunčiate sau laišką, kuriame informuojate apie fotoaparato kainą
ryšį.sendmail („siuntėjo pašto adresas“, „gavėjo pašto adresas“,
Tema: Galite nusipirkti fotoaparatą)
 
# baigiamas ryšys
ryšį.mesti ()
# pašto funkcija čia baigsis
 
# paleidus „Google Chrome“, argumentu pateikiant „chromedriver“ kelią
tvarkyklė = žiniatinklio tvarkyklė.„Chrome“ („kelias į chromedriver“)
 
# chromo lango sumažinimas
vairuotojas.minimize_window ()
 
# atidarymo draz.pk svetainė
vairuotojas.gauti ('https: // www.darazas.pk /„)
 
# paieškos juostos elemento nustatymas naudojant atributą „id“ kameros paieškai
searchBar = tvarkyklė.find_element_by_id ('q')
 
#writing camera paieškos juostoje
paieškos juosta.send_keys ('kamera')
 
#locating paieškos mygtuko elementas naudojant elemento xpath
paieška = tvarkyklė.find_element_by_xpath ('// * [@ id = "topActionHeader"] / div / div [2] / div / div [2]
/ forma / div / div [2] / mygtukas ')
 
#spustelėjus paieškos mygtuką
Paieška.spustelėkite ()
 
# norimo produkto elemento nustatymas naudojant „xpath“ atributą
produktas = tvarkyklė.find_element_by_xpath ('// * [@ id = "root"] / div / div [3] / div [1] / div / div [1]
/ div [2] / div [1] / div / div / div [2] / div [2] / a ')
 
# spustelėdami norimą produktą
produktas.spustelėkite ()
 
# kainos nustatymo elementas naudojant atributą xpath
kaina = vairuotojas.find_element_by_xpath ('// * [@ id = "module_product_price_1"] / div / div / span')
 
# išgauti tekstą iš kainos elemento. Tai suteikia tokio produkto kainą kaip „Rs“. 24 500 '
kaina = kaina.teksto
 
# konvertuoti kainą į eilutę
Kaina = str (kaina)
 
# tuščio masyvo apibrėžimas. Tai bus naudojama išgaunant skaitmenų formą, pvz., „24500“
forma „Rs. 24 500 '
skaičius = []
 
# skaito visus kainų eilutės įrašus po vieną naudodami ciklą
už x kainą:
 
# patikrinti, ar įrašas skaitmuo, ar ne, nes mes norime tik skaitmenų kainos
jei x.isdigit ():
 
# prie skaitmenų sąrašo pridedami tik skaitmenys
skaičius.pridėti (x)
 
# prisijungti prie visų numerių įrašų įrašų. Dabar kaina yra eilutė, kurioje yra tik skaitmenys
kaina = ".prisijungti (skaičius)
 
# konvertuoti kainos eilutę į sveiką skaičių
kaina = int (kaina)
 
# patikrinti, ar kaina yra prieinama, ar ne
jei kaina <= 25000:
 
# skambinimo pašto funkcija, skirta informuoti apie kainą
Paštas()
 
# uždaroma naršyklė
vairuotojas.mesti ()

Virš kodo atidaromas darazas.pk svetainę ir ieško fotoaparato ir informuoja jus el. paštu, jei kaina yra prieinama. Pirmiausia mes importavome SELENIJA ir SMTPLIB moduliai. Tada mes nustatėme „pašto“ funkciją, kuri jums siunčia laišką, informuodama, kad paskambinus kaina yra prieinama.

Po to atidarėme „Chrome“ naršyklę naudodami „chromedriver“ ir ieškojome „daraz“.pk '. Tada surandame norimą produktą naudodami elementus ir jų atributus. Kaip elementai randami ir randami, buvo aprašyta aukščiau. Kaina, kurią gavome, buvo eilutė, todėl konvertuojome šią eilutę į sveiką skaičių ir tada patikrinome, ar kaina yra prieinama, ar ne. Jei kaina yra prieinama, paskambinkite „pašto“ funkcija.

„Cron“ darbo kūrimas

Virš dviejų automatizavimo scenarijų reikia paleisti kartą per dieną tam tikru laiku. Mes galime tai valdyti naudodami „cron“ darbą. Prie crontab pridėtos užduotys gali būti vykdomos tam tikru laiku pakartotinai. Norėdami pridėti aukščiau nurodytas užduotis crontab, pirmiausia paleiskite šią komandą „Linux“ terminale.

[apsaugotas el. paštas]: ~ $ crontab -e

Virš komandos atsidarys redaguoti crontab failas. Failo pabaigoje įveskite šią komandą.

0 8 * * * python / path / to / python / script

Mes matome įrašus prieš komandą iš dešinės į kairę.

Taigi ši komanda bus vykdoma kasdien 8 val.

Išvada

Šiame straipsnyje aptarėme, kaip galite naudotis SELENIJA kartu su „Python“, kad jūsų naršyklė būtų automatizuota naudojant skirtingas technikas. Juo naudodamiesi galite automatizuoti savo kasdienį darbą, užpildyti formas, atsisiųsti daiktus ir daugybę kitų dalykų. Aptarėme tik du pavyzdžius, tačiau naršyklėje galite automatizuoti kiekvieną žmogaus atliekamą dalyką.

Vidutinis pelės mygtukas neveikia sistemoje „Windows 10“
The vidurinis pelės mygtukas padeda naršyti ilgus tinklalapius ir ekranus, kuriuose yra daug duomenų. Jei tai sustos, gerai, jūs naudosite klaviatūrą ...
Kaip pakeisti kairįjį ir dešinįjį pelės mygtukus „Windows 10“ kompiuteryje
Gana įprasta, kad visi kompiuterio pelės įrenginiai yra ergonomiškai sukurti dešiniarankiams. Tačiau yra pelių prietaisų, specialiai sukurtų kairiaran...
Mėgdžiokite pelės paspaudimus, užveskite pelės žymeklį naudodami pelę „Clickless Mouse“ sistemoje „Windows 10“
Pelės ar klaviatūros naudojimas netinkamoje laikysenoje, kai naudojama per daug, gali sukelti daug sveikatos problemų, įskaitant įtampą, riešo kanalo ...