Selen

Browser-automatisering ved hjælp af selen (Python)

Browser-automatisering ved hjælp af selen (Python)
SELENIUM er et webbaseret & open source-værktøj, der bruges til at kontrollere webbrowseren gennem mange programmeringssprog. Det er et tredjepartsværktøj og er tilgængeligt på mange programmeringssprog (f.eks.g. Java, Python, C #, PHP osv.). Det har understøttelse af næsten alle browsere. I denne vejledning ser vi på, hvordan man bruger Selen med Python, fordi Python giver et behageligt miljø til at bruge dette værktøj. Selenium API til Python lader dit program styre din browser direkte på en lignende måde som et menneske gør. Det kan åbne nye faner for dig, udfylde dine oplysninger, indsende formularer, klikke på forskellige links og andre lignende handlinger. Her vil vi se, hvordan vi automatiserer vores webbrowser ved hjælp af selen med Python.

Selen installation

Før brug SELENIUM modul i python, skal vi installere det. Kør følgende kommando i terminalen for at installere den.

pip installer selen

ELLER

pip3 installer selen

Dette installeres SELENIUM modul, og nu er det klar til brug.

Webdrivere

Før du automatiserer webbrowseren ved hjælp af SELENIUM-modulet, kræves det webdriver for den valgte browser. For at automatisere Chrome Browser skal vi have Chrome webdriver. Stien, hvor webdriverfilen er placeret, videregives som argument. Webdriver interagerer med webbrowseren gennem en protokol. Gå til følgende link for at downloade webdrivere fra forskellige browsere.

https: // www.selenhq.org / download /

Kom godt i gang

Efter installation af de krævede moduler kan du åbne python CLI og begynde at spille med din browser. Så lad os først importere webdriver og andre moduler, disse moduler og klasser lader dit Python-program sende tastetryk og anden info til din browser.

C: \ Brugere \ Usama Azad> python
Python 3.6.4 (v3.6.4: d48eceb, 19. december 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] på win32
Skriv "hjælp", "copyright", "credits" eller "licens" for at få flere oplysninger.
>>> fra selen import webdriver
>>> fra selen.webdriver.almindelige.nøgler importerer nøgler
#sti til dine chrome drivere
>>> driver = webdriver.Chrome ('C: \ chromedriver')

Dette åbner et nyt Chrome-browservindue for dig. Nu kan du få selen til at gå til ethvert websted ved hjælp af .get () metode. Denne metode åbner hjemmesiden og venter på, at den indlæses, så kan du indtaste din næste kommando.

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

Sådan finder du elementer på en webside

Vi kan finde et bestemt element på en webside ved at følge metoden.

Placering af elementer ved hjælp af selen

For at finde elementer på en webside bruger vi 'find_element'metode. Følgende er 'find_elementmetoder tilgængelige i SELENIUM.

Ved at bruge ovenstående metoder kan vi finde et element på en webside og bruge det i vores automatiseringskode.

Klik på forskellige websider

click () -metoden i selen kan bruges til at klikke på forskellige links og knapelementer, som du fandt ved hjælp af ovenstående metoder. For eksempel vil du klikke på “Glemt konto?”På Facebook-siden

>>> link_button = driver.find_element_by_link_text ('Glemt konto?')
>>> link_button.klik ()

Send specielle nøgler

Selen har også et modul, der lader dig sende specielle nøgler (f.eks.g, Enter, Escape, Side ned, side op osv.) mens du surfer på internettet. Du skal importere dette modul ved hjælp af følgende kommando

>>> fra selen.webdriver.almindelige.nøgler importerer nøgler

For eksempel læser du en artikel på Wikipedia om De Forenede Staters historie, men du er for doven til at trykke på PIL NED efter et stykke tid. Du kan automatisere ved at sende denne nøgle til browseren ved hjælp af Selenium

fra selen import webdriver
fra selen.webdriver.almindelige.nøgler importerer nøgler
importtid
driver = webdriver.Chrome ('C: \ chromedriver')
# Åbn artikellinket ved hjælp af get-metoden
chauffør.get ("https: // da.wikipedia.org / wiki / United_States ")
# Begynd fra starten af ​​siden
elem = driver.find_element_by_tag_name ('html')
mens det er sandt:
 
tid.sove (5)
elem.send_keys (nøgler.NED)

Sådan automatiseres browser

I dette afsnit vil vi se, hvordan vi automatiserer vores webbrowser ved hjælp af nogle brugssager.

Log automatisk ind på sociale mediewebsteder

Med webautomatisering kan du nemt gøre din logningsproces automatisk. Hvis du regelmæssigt tjekker dine sociale mediewebsteder på et bestemt tidspunkt (f.eks. Kl. 20.00), er det godt at automatisere denne proces. Følgende er koden til automatisering af logning i processen med to sociale mediesider 'facebook' og 'twitter' ved hjælp af SELENIUM modul i Python.

# importerer webdriver fra selen-modul
fra selen import webdriver
 
# importerer specielle nøgler fra selen
fra selen.webdriver.almindelige.nøgler importerer nøgler
 
# opretter 'driver' objekt til 'Google-Chrome'
driver = webdriver.Chrome ('sti til Chrome-driver')
 
# maksimerer vinduet
chauffør.maksimere vindue ()
 
# åbner facebook
chauffør.få('http: // www.Facebook.com')
 
# lokalisering af 'E-mail eller telefon' element ved hjælp af attributten 'id'
brugernavn = driver.find_element_by_id ('email')
 
# Indtastning af brugernavn eller e-mail til facebook
brugernavn.send_keys ('Indtast brugernavn / e-mail')
 
# lokalisering af 'adgangskode'-element ved hjælp af attributten' id '
passWord = driver.find_element_by_id ('pass')
 
# indtastning af adgangskode til facebook
adgangskode.send_keys ("Indtast adgangskode")
 
# lokalisering af 'login-knap'-element ved hjælp af attributten' id 'og tryk på' Enter '
chauffør.find_element_by_id ('u_0_b').send_keys (nøgler.GÅ IND)
 
# åbner ny fane til twitter
chauffør.execute_script ("vindue.åben ('http: // www.twitter.com ',' tab2 '); ")
 
# skifter til ny fane
chauffør.switch_to_window ('tab2')
 
#placering 'log in' element og klik på det
chauffør.find_element_by_xpath ('// * [@ id = "doc"] / div / div [1] / div [1] / div [2] / div [1]').klik ()
 
# lokaliserer elementet 'Telefon, e-mail eller brugernavn'
brugernavn = driver.find_element_by_xpath ('// * [@ id = "side-container"] / div / div [1] / form /
fieldset / div [1] / input ')
 
# indtastning af brugernavn til twitter
brugernavn.send_keys ('Indtast brugernavn')
 
# finder elementet 'Adgangskode'
passWord = driver.find_element_by_xpath ('// * [@ id = "side-container"] / div / div [1] / form /
fieldset / div [2] / input ')
# indtastning af adgangskode til twitter
adgangskode.send_keys ('Indtast adgangskode')
# lokalisering af 'log ind' -knappen og klik på den
chauffør.find_element_by_xpath ('// * [@ id = "side-container"] / div / div [1] / form / div [2] / knap')
.klik ()

Ovenstående kode automatiserer browseren til at logge ind på sociale mediewebsteder. Først og fremmest oprettede vi et objekt i vores yndlingsbrowser. I denne brugssag har vi taget 'Chrome' som en browser. For at skabe objekt passerede vi stien til vores 'chromedriver' som et argument. Derefter indtastede vi urlens facebook og loggede ind på Facebook ved at vælge elementer og videregive brugernavn og adgangskode.

Herefter åbnede vi en ny fane og indtastede urlens twitter. Herefter skiftede vi til den nye fane, da kontrollen med koden stadig var på den første fane, selvom den anden fane var åben. Derefter loggede vi ind på twitter ved at vælge elementer og videregive brugernavn og adgangskode.

Online shopping automatisering

Et andet godt eksempel på browserautomatisering kan være online shopping. For eksempel vil du købe et kamera online, men priserne er for høje. Du kontrollerer hver dag, om prisen er inden for dit sortiment eller ej. Denne opgave kan automatiseres ved hjælp af SELENIUM og du kan undgå at kontrollere prisen hver dag. Følgende kode informerer dig via mail, om prisen på dit ønskede produkt er overkommelig eller ej. Hvis dit ønskede produkt er til salg, underretter programmet dig via en e-mail.

# importerer webdriver fra selen-modul
fra selen import webdriver
 
# importerer smtplib-modul til afsendelse af mail
importer smtplib
 
# definerer mailfunktion for at informere via e-mail
def mail ():
 
# opretter forbindelse til gmail-serveren med domænenavn og portnummer. 
Dette adskiller sig fra hver e-mail-udbyder
forbindelse = smtplib.SMTP ('smtp.gmail.com ', 587)
 
# sige hej til serveren
forbindelse.ehlo ()
 
# starter krypteret TLS-forbindelse
forbindelse.starttls ()
 
# log ind på gmail-server med din hovedadresse og adgangskode
forbindelse.login ('afsender-mail-adresse', 'adgangskode')
 
# sende mail til dig selv, der informerer dig om prisen på kameraet
forbindelse.sendmail ('afsender-mail-adresse', 'modtager-mail-adresse',
'Emne: Du kan købe kameraet')
 
# slutter forbindelse
forbindelse.Afslut()
# mail-funktion slutter her
 
# lancering af Google Chrome ved at angive stien til chromedriver som et argument
driver = webdriver.Chrome ('sti til chromedriver')
 
# minimering af kromvinduet
chauffør.minimer_vindue ()
 
# åbningsdug.pk site
chauffør.få('https: // www.daraz.pk /')
 
# lokaliseringselement i søgefeltet ved hjælp af id-attribut til at søge efter kamera
searchBar = driver.find_element_by_id ('q')
 
# skrivekamera i søgefeltet
søgefelt.send_keys ('kamera')
 
#locating search button element using xpath of element
søgning = driver.find_element_by_xpath ('// * [@ id = "topActionHeader"] / div / div [2] / div / div [2]
/ form / div / div [2] / knap ')
 
#klik på søgeknappen
Søg.klik ()
 
# lokaliseringselement af dit ønskede produkt ved hjælp af attributten xpath
produkt = driver.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 ')
 
# at klikke på det ønskede produkt
produkt.klik ()
 
# lokaliseringselement af pris ved hjælp af attributten xpath
pris = driver.find_element_by_xpath ('// * [@ id = "module_product_price_1"] / div / div / span')
 
# udpakning af tekst fra priselementet. Dette giver prisen på produktet som 'Rs. 24.500 '
pris = pris.tekst
 
# konverterer pris til streng
Pris = str (pris)
 
# definerer et tomt array. Dette vil blive brugt til at udtrække cifre fra pris som '24500'
form 'Rs. 24.500 '
num = []
 
# læser alle poster i prisstreng en efter en ved hjælp af for loop
for x i pris:
 
# kontrollere, om posten er cifret eller ej, da vi kun vil have cifre i pris
hvis x.isdigit ():
 
# tilføjer kun cifre til numlisten
antal.tilføj (x)
 
# slutter sig til alle posterne i num listen. Nu er prisen en streng, der kun indeholder cifre
pris = ".deltage (num)
 
# konverterer prisstreng til heltal
pris = int (pris)
 
# kontrollere, om prisen er overkommelig eller ej
hvis pris <= 25000:
 
# ringer mail-funktion for at informere dig om prisen
post()
 
# lukker browser
chauffør.Afslut()

Ovenstående kode åbner daraz.pk site og søger efter kameraet og informerer dig via e-mail, hvis prisen er overkommelig. Først og fremmest importerede vi SELENIUM og SMTPLIB moduler. Derefter definerede vi 'mail' -funktionen, som sender dig mail, der informerer dig om, at prisen er overkommelig, når den kaldes.

Efter dette åbnede vi chrome browser ved hjælp af chromedriver og søgte efter 'daraz.pk '. Derefter finder vi vores ønskede produkt ved hjælp af elementer og deres attributter. Hvordan elementer findes og lokaliseres er beskrevet ovenfor. Den pris, vi fik, var en streng, så vi konverterede denne streng til heltal og kontrollerede derefter, om prisen er overkommelig eller ej. Hvis prisen er overkommelig, skal du ringe til 'mail'-funktionen.

Opretter Cron-job

Over to automatiseringsskripter kræves, at de kører en gang om dagen på et bestemt tidspunkt. Vi kan klare dette ved hjælp af cron-job. Opgaver, der føjes til crontab, kan køres på et bestemt tidspunkt gentagne gange. For at tilføje ovenstående opgaver i crontab skal du først køre følgende kommando i Linux Terminal.

[e-mail-beskyttet]: ~ $ crontab -e

Ovenstående kommando åbner crontab-fil til redigering. Indtast følgende kommando i slutningen af ​​filen.

0 8 * * * python / sti / til / python / script

Vi ser poster før kommando fra højre til venstre.

Så denne kommando kører klokken 8 hver dag.

Konklusion

I denne artikel diskuterede vi, hvordan du kan bruge SELENIUM sammen med Python til at automatisere din browser ved hjælp af forskellige teknikker. Du kan automatisere dit daglige rutinearbejde, udfylde formularer, downloade dine ting og en masse ting ved hjælp af det. Vi diskuterede kun to eksempler her, men du kan automatisere hver eneste ting, et menneske kan gøre manuelt med browseren.

Mus Remap dine museknapper forskelligt til anden software med X-Mouse Button Control
Remap dine museknapper forskelligt til anden software med X-Mouse Button Control
Måske har du brug for et værktøj, der kan ændre din muses kontrol med hver applikation, du bruger. Hvis dette er tilfældet, kan du prøve en applikatio...
Mus Microsoft Sculpt Touch Wireless Mouse Review
Microsoft Sculpt Touch Wireless Mouse Review
Jeg har for nylig læst om Microsoft Sculpt Touch trådløs mus og besluttede at købe den. Efter at have brugt det et stykke tid besluttede jeg at dele m...
Mus AppyMouse pegefelt på skærmen og musemarkør til Windows-tablets
AppyMouse pegefelt på skærmen og musemarkør til Windows-tablets
Tabletbrugere savner ofte musemarkøren, især når de er vante til at bruge bærbare computere. Touchscreen-smartphones og tablets har mange fordele, og ...