Selenium

Selaimen automaatio seleenillä (Python)

Selaimen automaatio seleenillä (Python)
SELEENI on verkkopohjainen ja avoimen lähdekoodin työkalu, jota käytetään verkkoselaimen hallintaan useilla ohjelmointikielillä. Se on kolmannen osapuolen työkalu, ja se on saatavana useille ohjelmointikielille (esim.g. Java, Python, C #, PHP jne.). Se tukee melkein kaikkia selaimia. Tässä opetusohjelmassa tarkastellaan Seleniumin käyttöä Pythonin kanssa, koska Python tarjoaa mukavan ympäristön tämän työkalun käyttämiseen. Selenium API for Python antaa sinun ohjelmallesi suoraan hallita selainta samalla tavalla kuin ihminen. Se voi avata uusia välilehtiä sinulle, täyttää tietosi, lähettää lomakkeita, napsauttaa erilaisia ​​linkkejä ja muita vastaavia toimintoja. Täällä näemme, kuinka automatisoimme selaimen käyttämällä seleeniä Pythonin kanssa.

Seleenin asennus

Ennen käyttöä SELEENI moduuli pythonissa, meidän on asennettava se. Asenna seuraava komento terminaalissa.

pip asenna seleeni

TAI

pip3 asenna seleeni

Tämä asennetaan SELEENI moduuli ja nyt se on käyttövalmis.

Verkko-ohjaimet

Ennen verkkoselaimen automatisointia SELENIUM-moduulilla vaaditaan valitun selaimen verkkoajuri. Chrome-selaimen automatisoimiseksi meillä on oltava Chrome-verkkoajuri. Polku, johon web-ohjaintiedosto sijoitetaan, välitetään argumenttina. Verkkoajuri on vuorovaikutuksessa selaimen kanssa protokollan kautta. Siirry seuraavaan linkkiin ladataksesi eri selainten verkko-ohjaimet.

https: // www.seleenihq.org / lataa /

Päästä alkuun

Vaadittujen moduulien asentamisen jälkeen voit avata python CLI: n ja aloittaa pelaamisen selaimellasi. Joten tuodaan ensin verkko-ohjain ja muut moduulit, näiden moduulien ja luokkien avulla Python-ohjelmasi voi lähettää näppäilyjä ja muuta tietoa selaimeesi.

C: \ Käyttäjät \ Usama Azad> python
Python 3.6.4 (v3.6.4: d48eceb, 19. joulukuuta 2017, 06:54:40) [MSC v.1900 64-bittinen (AMD64)] Win32: lla
Kirjoita "help", "copyright", "credits" tai "license" saadaksesi lisätietoja.
>>> seleenin tuonti -driverilta
>>> seleenistä.verkko-ohjain.yleinen.avaimet tuovat avaimet
#polku kromiohjaimillesi
>>> ohjain = verkko-ohjain.Kromi ('C: \ chromedriver')

Tämä avaa uuden Chrome-selainikkunan sinulle. Nyt voit hankkia seleeniä mihin tahansa verkkosivustoon .get () -menetelmä. Tämä menetelmä avaa verkkosivuston ja odottaa sen latautumista, sitten voit kirjoittaa seuraavan komennon.

>>> kuljettaja.get ("https: // www.Facebook.com ")

Kuinka löytää elementtejä verkkosivulta

Voimme löytää tietyn elementin verkkosivulta seuraamalla menetelmää.

Elementtien sijainti seleenillä

Elementtien löytämiseksi verkkosivulta käytämme 'etsi_elementtimenetelmä. Seuraavat ovatetsi_elementti"käytettävissä olevat menetelmät SELEENI.

Yllä olevia menetelmiä käyttämällä voimme etsiä elementin verkkosivulta ja käyttää sitä automaatiokoodissamme.

Napsauttamalla eri verkkosivun elementtejä

click () -menetelmää seleenissä voidaan käyttää napsauttamaan eri linkkejä ja painike-elementtejä, jotka löysit yllä olevilla menetelmillä. Haluat esimerkiksi napsauttaa “Unohdettu tili?”Facebook-sivulla

>>> link_button = ohjain.find_element_by_link_text ('Unohdettu tili?')
>>> link_painike.klikkaus()

Lähetä erikoisavaimet

Seleenissä on myös moduuli, jonka avulla voit lähettää erikoisavaimia (esim.g, Enter, Escape, Page down, sivu ylös jne.) selatessasi Internetiä. Tämä moduuli on tuotava seuraavalla komennolla

>>> seleenistä.verkko-ohjain.yleinen.avaimet tuovat avaimet

Luet esimerkiksi Wikipediassa artikkelin Yhdysvaltojen historiasta, mutta olet liian laiska painamaan ALANUOLI-näppäintä jonkin ajan kuluttua. Voit automatisoida lähettämällä tämän avaimen selaimeen Seleniumin avulla

seleenin tuonti -ohjaimesta
seleenistä.verkko-ohjain.yleinen.avaimet tuovat avaimet
tuontiaika
ohjain = verkko-ohjain.Kromi ('C: \ chromedriver')
#Avaa artikkelilinkki get-menetelmällä
kuljettaja.get ("https: // fi.wikipedia.org / wiki / United_States ")
#Aloita sivun alusta
elem = kuljettaja.find_element_by_tag_name ('html')
kun taas totta:
 
aika.nukkua (5)
elem.send_keys (Avaimet.ALAS)

Selaimen automatisointi

Tässä osassa nähdään, miten verkkoselaimesi voidaan automatisoida joidenkin käyttötapausten avulla.

Kirjaudu sosiaalisen median verkkosivustoille automaattisesti

Verkkoautomaation avulla voit tehdä kirjautumisprosessistasi helposti automaattisen. Jos tarkistat sosiaalisen median verkkosivustojasi tiettynä ajankohtana (esimerkiksi klo 20) säännöllisesti, on hyvä automatisoida tämä prosessi. Seuraava on koodi, jolla automatisoidaan kirjautumista kahden sosiaalisen median sivuston 'facebook' ja 'twitter' avulla SELEENI moduuli Pythonissa.

# tuodaan verkko-ohjain seleenimoduulista
seleenin tuonti -ohjaimesta
 
# erityisavainten tuominen seleenistä
seleenistä.verkko-ohjain.yleinen.avaimet tuovat avaimet
 
# luodaan ohjainobjekti Google-Chromelle
ohjain = verkko-ohjain.Chrome ('polku Chrome-ohjaimeen')
 
# maksimoi ikkuna
kuljettaja.maksimoida_ikkuna ()
 
# Facebookin avaaminen
kuljettaja.saada('http: // www.Facebook.com')
 
# Sähköposti tai puhelin -elementin löytäminen id-attribuutilla
käyttäjänimi = ohjain.find_element_by_id ('sähköposti')
 
# Syötä käyttäjätunnus tai sähköpostiosoite facebookille
käyttäjänimi.send_keys ('Anna käyttäjänimi / sähköpostiosoite')
 
# etsi 'Salasana' -elementti käyttämällä 'id' -attribuuttia
passWord = ohjain.find_element_by_id ('pass')
 
# salasanan kirjoittaminen facebookille
Salasana.send_keys ("Anna salasana")
 
# etsi 'kirjautumispainike' -elementti id-attribuutilla ja paina Enter-näppäintä
kuljettaja.find_element_by_id ('u_0_b').send_keys (Avaimet.TULLA SISÄÄN)
 
# uuden välilehden avaaminen Twitterille
kuljettaja.execute_script ("ikkuna.auki ('http: // www.viserrys.com ',' tab2 '); ")
 
# vaihtaminen uuteen välilehteen
kuljettaja.switch_to_window ('välilehti2')
 
#locating 'log in' -elementti ja napsauttamalla sitä
kuljettaja.find_element_by_xpath ('// * [@ id = "doc"] / div / div [1] / div [1] / div [2] / div [1]').klikkaus()
 
# Paikanna Puhelin, sähköposti tai käyttäjänimi -elementti
käyttäjänimi = ohjain.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / lomake /
kenttäsarja / div [1] / tulo ')
 
# syötetään käyttäjänimi Twitterille
käyttäjänimi.send_keys ('Anna käyttäjänimi')
 
# etsi 'Salasana' -elementti
passWord = ohjain.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / lomake /
kenttäsarja / div [2] / tulo ')
# kirjoittamalla salasana twitterille
Salasana.send_keys ('Anna salasana')
# etsi 'Kirjaudu sisään' -painike ja napsauta sitä
kuljettaja.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form / div [2] / painike')
.klikkaus()

Yllä oleva koodi automatisoi selaimen kirjautumaan sosiaalisen median verkkosivustoille. Ensinnäkin loimme kohteen suosikkiselaimestamme. Tässä käyttötapauksessa olemme ottaneet Chrome-selaimen. Objektin luomiseksi ohitimme argumenttina 'chromedriverin' polun. Sitten syötimme facebookin URL-osoitteen ja kirjauduimme sisään Facebookiin valitsemalla elementit ja välittämällä käyttäjänimen ja salasanan.

Tämän jälkeen avasimme uuden välilehden ja annoimme twitter-osoitteen. Tämän jälkeen vaihdoimme uudelle välilehdelle, koska koodin hallinta oli edelleen ensimmäisellä välilehdellä, vaikka toinen välilehti oli auki. Sitten kirjauduimme twitteriin valitsemalla elementit ja välittämällä käyttäjänimen ja salasanan.

Verkkokaupan automaatio

Toinen hyvä esimerkki selaimen automaatiosta voi olla verkkokaupoissa. Haluat esimerkiksi ostaa kameran verkosta, mutta hinnat ovat liian korkeat. Tarkistat päivittäin, onko hinta omalla alueella vai ei. Tämä tehtävä voidaan automatisoida SELEENI ja voit välttää hinnan tarkistamisen päivittäin. Seuraava koodi ilmoittaa sinulle postitse, onko haluamasi tuotteen hinta edullinen vai ei. Jos haluamasi tuote on myynnissä, ohjelma ilmoittaa siitä sinulle sähköpostitse.

# tuodaan verkko-ohjain seleenimoduulista
seleenin tuonti -ohjaimesta
 
# smtplib-moduulin tuominen postin lähettämistä varten
tuoda smtplib
 
# sähköpostitoiminnon määrittäminen sähköpostitse tiedottamiseksi
def post ():
 
# yhteyden muodostaminen Gmail-palvelimeen verkkotunnuksella ja portin numerolla. 
Tämä eroaa jokaisen sähköpostipalvelun tarjoajan mukaan
yhteys = smtplib.SMTP ('smtp.gmail.com ', 587)
 
# tervehti palvelimelle
yhteys.ehlo ()
 
# salatun TLS-yhteyden aloittaminen
yhteys.starttls ()
 
# kirjaudu Gmail-palvelimeen pääosoitteellasi ja salasanallasi
yhteys.kirjautuminen ('lähettäjän sähköpostiosoite', 'salasana')
 
# postin lähettäminen itsellesi ja kameran hinnan ilmoittaminen
yhteys.sendmail ('lähettäjän sähköpostiosoite', 'vastaanottajan sähköpostiosoite',
Aihe: Voit ostaa kameran)
 
# yhteys päättyy
yhteys.lopettaa()
# postitoiminto päättyy tähän
 
# google chromen käynnistäminen antamalla argumentiksi chromedriver-polku
kuljettaja = verkko-ohjain.Chrome ('polku kromiohjaimeen')
 
# minimoi kromi-ikkuna
kuljettaja.minimoi ikkuna ()
 
# avaava draz.pk-sivusto
kuljettaja.saada('https: // www.daraz.pk /')
 
# hakupalkin elementin sijainti ID-määritteen avulla kameran etsimiseen
searchBar = ohjain.find_element_by_id ('q')
 
#kirjoittava kamera hakupalkissa
hakupalkki.send_keys ('kamera')
 
#locating hakupainike-elementti elementin xpath-polkua käyttämällä
haku = ohjain.find_element_by_xpath ('// * [@ id = "topActionHeader"] / div / div [2] / div / div [2]
/ muoto / div / div [2] / painike ')
 
# napsauttamalla hakupainiketta
Hae.klikkaus()
 
# haluamasi tuotteen elementin sijainti xpath-määritteellä
tuote = ohjain.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 ')
 
# napsauttamalla haluamaasi tuotetta
tuote.klikkaus()
 
# hinnan elementti xpath-määritteellä
hinta = kuljettaja.find_element_by_xpath ('// * [@ id = "module_product_price_1"] / div / div / span')
 
# puretaan tekstiä hintaelementistä. Tämä antaa tuotteen hinnan, kuten 'Rs. 24 500 '
hinta = hinta.teksti
 
# hinnan muuntaminen merkkijonoksi
Hinta = str (hinta)
 
# määritetään tyhjä taulukko. Tätä käytetään purettaessa numeroita hinnasta, kuten '24500'
muodosta 'Rs. 24 500 '
numero = []
 
# lukee kaikki merkkijonon merkinnät yksitellen silmukan avulla
x: lle hinnassa:
 
# tarkistaa, onko merkintä numeroinen vai ei, koska haluamme vain numeroita hinnassa
jos x.isdigit ():
 
# vain numeroiden lisääminen numeroluetteloon
numero.liitä (x)
 
# yhdistää kaikki numeroluettelon merkinnät. Nyt hinta on merkkijono, joka sisältää vain numeroita
hinta = ".liittyä (numero)
 
# muuntaa hintajonon kokonaislukuksi
hinta = int (hinta)
 
# tarkistaa, onko hinta edullinen vai ei
jos hinta <= 25000:
 
# soittopostitoiminto ilmoittaa sinulle hinnasta
posti ()
 
# sulkeutuva selain
kuljettaja.lopettaa()

Koodin yläpuolella avautuu daraz.pk-sivusto ja etsii kameraa ja ilmoittaa sinulle sähköpostitse, jos hinta on edullinen. Ensinnäkin tuotiin SELEENI ja SMTPLIB moduulit. Sitten määriteltiin "posti" -toiminto, joka lähettää sinulle sähköpostia, jossa ilmoitetaan, että hinta on edullinen, kun soitetaan.

Tämän jälkeen avasimme kromiselaimen chromedriverin avulla ja etsimme sanaa 'daraz.pk '. Sitten löydämme haluamasi tuotteen elementtien ja niiden määritteiden avulla. Elementtien löytäminen ja sijoittaminen on kuvattu edellä. Saamamme hinta oli merkkijono, joten muutimme tämän merkkijonon kokonaisluvuksi ja tarkistimme sitten, onko hinta edullinen vai ei. Jos hinta on edullinen, soita postitoimintoon.

Cron-työn luominen

Kahden edellä olevan automaatioskriptin on suoritettava kerran päivässä tiettynä ajankohtana. Voimme hallita tätä käyttämällä cron-työtä. Crontabiin lisätyt tehtävät voidaan suorittaa tietyllä hetkellä toistuvasti. Jos haluat lisätä yllä olevat tehtävät crontabiin, suorita ensin seuraava komento Linux-terminaalissa.

[sähköposti suojattu]: ~ $ crontab -e

Yllä oleva komento avaa muokattavan crontab-tiedoston. Kirjoita tiedoston lopussa seuraava komento.

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

Näemme merkinnät ennen komentoa oikealta vasemmalle.

Joten tämä komento suoritetaan päivittäin kello 8.

Johtopäätös

Tässä artikkelissa keskustelimme siitä, miten voit käyttää SELEENI yhdessä Pythonin kanssa automatisoimaan selaimesi eri tekniikoilla. Voit automatisoida päivittäisen rutiinityösi, täyttää lomakkeita, ladata tavarasi ja paljon muuta sen avulla. Keskustelimme täällä vain kahdesta esimerkistä, mutta voit automatisoida jokaisen ihmisen tekemän manuaalisesti selaimen avulla.

How to Install and Play Doom on Linux
Introduction to Doom The Doom Series originated in the 90s after the release of the original Doom. It was an instant hit and from that time onwards th...
Vulkan for Linux Users
With each new generation of graphics cards, we see game developers push the limits of graphical fidelity and come one step closer to photorealism. But...
OpenTTD vs Simutrans
Creating your own transport simulation can be fun, relaxing and extremely enticing. That's why you need to make sure that you try out as many games as...