Selen

Browser Automation Using Selenium (Python)

Browser Automation Using Selenium (Python)
SELEN är ett webbaserat & öppen källkodsverktyg som används för att styra webbläsaren genom många programmeringsspråk. Det är ett verktyg från tredje part och finns tillgängligt för många programmeringsspråk (t.ex.g. Java, Python, C #, PHP etc.). Den har stöd för nästan alla webbläsare. I den här handledningen tittar vi på hur man använder Selenium med Python eftersom Python ger en bekväm miljö att använda detta verktyg. Selenium API för Python låter ditt program styra din webbläsare direkt på ett liknande sätt som en människa gör. Det kan öppna nya flikar för dig, fylla i din information, skicka formulär, klicka på olika länkar och andra liknande åtgärder. Här kommer vi att se hur vi automatiserar vår webbläsare med selen med Python.

Installation av selen

Innan användning SELEN modul i python måste vi installera den. Kör följande kommando i terminalen för att installera det.

pip installera selen

ELLER

pip3 installera selen

Detta kommer att installeras SELEN modulen och nu är den redo att användas.

Webbdrivrutiner

Innan du automatiserar webbläsaren med SELENIUM-modulen krävs en webbläsardrivrutin för den valda webbläsaren. För att automatisera Chrome Browser måste vi ha Chrome-webbdrivrutin. Sökvägen, där webbdrivrutinsfilen placeras, skickas som argument. Webbdrivrutinen interagerar med webbläsaren via ett protokoll. Gå till följande länk för att ladda ner webbdrivrutiner för olika webbläsare.

https: // www.seleniumhq.org / nedladdning /

Komma igång

Efter att ha installerat de nödvändiga modulerna kan du öppna python CLI och börja spela med din webbläsare. Så låt oss importera webdriver och andra moduler först, dessa moduler och klasser låter ditt Python-program skicka tangenttryckningar och annan information till din webbläsare.

C: \ Användare \ Usama Azad> python
Python 3.6.4 (v3.6.4: d48eceb, 19 dec 2017, 06:54:40) [MSC v.1900 64 bitar (AMD64)] på win32
Skriv "hjälp", "copyright", "credits" eller "licens" för mer information.
>>> från selenimportwebdriver
>>> från selen.webbdrivare.allmänning.nycklar importerar nycklar
#väg till dina kromdrivrutiner
>>> drivrutin = webdriver.Chrome ('C: \ chromedriver')

Detta öppnar ett nytt Chrome-webbläsarfönster åt dig. Nu kan du få selen att gå till vilken webbplats som helst med .get () -metoden. Denna metod öppnar webbplatsen och väntar på att den ska laddas, så kan du ange ditt nästa kommando.

>>> förare.få ("https: // www.Facebook.com ")

Hur man hittar element på en webbsida

Vi kan hitta specifika element på en webbsida genom att följa metoden.

Hitta element med hjälp av selen

För att hitta element på en webbsida använder vi 'hitta_elementmetod. Följande är 'hitta_elementmetoder tillgängliga i SELEN.

Genom att använda ovanstående metoder kan vi hitta ett element på en webbsida och använda det i vår automatiseringskod.

Klicka på olika webbsidor

click () -metoden i selen kan användas för att klicka på olika länkar och knappelement som du hittade med ovanstående metoder. Du vill till exempel klicka på “Glömt konto?”På Facebook-sidan

>>> länk_knapp = förare.find_element_by_link_text ('Glömt konto?')
>>> länk_knapp.klick()

Skicka specialnycklar

Selen har också en modul som låter dig skicka specialnycklar (t.ex.g, Enter, Escape, Page down, page up etc) medan du surfar på webben. Du måste importera den här modulen med följande kommando

>>> från selen.webbdrivare.allmänning.nycklar importerar nycklar

Du läser till exempel en artikel på Wikipedia om USA: s historia, men du är för lat för att trycka på PIL NER efter ett tag. Du kan automatisera genom att skicka den här nyckeln till webbläsaren med Selenium

från selenimportwebdriver
från selen.webbdrivare.allmänning.nycklar importerar nycklar
importtid
drivrutin = webdriver.Chrome ('C: \ chromedriver')
# Öppna artikellänken med hjälp av get-metoden
förare.get ("https: // sv.wikipedia.org / wiki / United_States ")
# Börja från början av sidan
elem = förare.hitta_element_by_tag_name ('html')
medan det är sant:
 
tid.sova (5)
elem.send_keys (nycklar.NER)

Hur man automatiserar webbläsaren

I det här avsnittet kommer vi att se hur vi automatiserar vår webbläsare med hjälp av vissa användningsfall.

Logga in på webbplatser för sociala medier automatiskt

Med webbautomation kan du enkelt göra din inloggningsprocess automatisk. Om du regelbundet kontrollerar dina webbplatser på sociala medier (säg kl. 20.00) är det bra att automatisera denna process. Följande är koden för att automatisera loggning i processen av två sociala mediasidor "facebook" och "twitter" med SELEN modul i Python.

# importerar webbdrivare från selen-modulen
från selenimportwebdriver
 
# importera specialnycklar från selen
från selen.webbdrivare.allmänning.nycklar importerar nycklar
 
# skapar 'drivrutin' för 'Google-Chrome'
drivrutin = webdriver.Chrome ('sökväg till Chrome-drivrutin')
 
# maximera fönstret
förare.maximera_fönster ()
 
# öppnar facebook
förare.skaffa sig('http: // www.Facebook.com')
 
# att hitta elementet "E-post eller telefon" med attributet "id"
användarnamn = drivrutin.find_element_by_id ('email')
 
# Ange användarnamn eller e-postadress för facebook
Användarnamn.send_keys ('Ange användarnamn / e-post')
 
# lokaliserar "Lösenord" -element med "id" -attribut
passWord = förare.find_element_by_id ('pass')
 
# anger lösenord för facebook
Lösenord.send_keys ("Ange lösenord")
 
# lokalisera "inloggningsknapp" -elementet med attributet "id" och tryck på "Enter"
förare.find_element_by_id ('u_0_b').send_keys (nycklar.STIGA PÅ)
 
# öppnar ny flik för twitter
förare.execute_script ("fönster.öppna ('http: // www.Twitter.com ',' tab2 '); ")
 
# byter till ny flik
förare.switch_to_window ('tab2')
 
#placera 'logga in' element och klicka på det
förare.hitta_element_by_xpath ('// * [@ id = "doc"] / div / div [1] / div [1] / div [2] / div [1]').klick()
 
# lokaliserar elementet 'Telefon, e-post eller användarnamn'
användarnamn = drivrutin.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form /
fältuppsättning / div [1] / ingång ')
 
# anger användarnamn för twitter
Användarnamn.send_keys ('Ange användarnamn')
 
# lokaliserar "Lösenord" -element
passWord = förare.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form /
fältuppsättning / div [2] / ingång ')
# anger lösenord för twitter
Lösenord.send_keys ('Ange lösenord')
# lokalisera "logga in" -knappen och klicka på den
förare.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form / div [2] / button')
.klick()

Ovanstående kod automatiserar webbläsaren för att logga in på webbplatser för sociala medier. Först och främst skapade vi ett objekt av vår favoritwebbläsare. I detta användningsfall har vi tagit 'Chrome' som en webbläsare. För att skapa objekt passerade vi vägen för vår "chromedriver" som ett argument. Sedan gick vi in ​​på webbadressen till facebook och loggade in på Facebook genom att välja element och skicka användarnamn och lösenord.

Efter detta öppnade vi en ny flik och gick in på twitterns webbadress. Efter detta bytte vi till den nya fliken eftersom kontrollen av koden fortfarande var på första fliken även om den andra fliken var öppen. Sedan loggade vi in ​​på twitter genom att välja element och skicka användarnamn och lösenord.

Online shopping automatisering

Ett annat bra exempel på webbläsarautomation kan vara online shopping. Du vill till exempel köpa en kamera online men priserna är för höga. Du kontrollerar varje dag om priset ligger inom ditt sortiment eller inte. Denna uppgift kan automatiseras med SELEN och du kan undvika att kontrollera priset varje dag. Följande kod informerar dig via e-post om priset på din önskade produkt är överkomligt eller inte. Om din önskade produkt är till salu kommer programmet att meddela dig via e-post.

# importerar webbdrivare från selen-modulen
från selenimportwebdriver
 
# importerar smtplib-modul för att skicka e-post
importera smtplib
 
# definierar e-postfunktion för att informera via e-post
def mail ():
 
# upprättar anslutning till Gmail-servern med domännamn och portnummer. 
Detta skiljer sig åt för varje e-postleverantör
anslutning = smtplib.SMTP ('smtp.gmail.com ', 587)
 
# säg hej till servern
förbindelse.ehlo ()
 
# startar krypterad TLS-anslutning
förbindelse.starttls ()
 
# logga in på gmail-servern med din huvudadress och lösenord
förbindelse.inloggning ('avsändarens e-postadress', 'lösenord')
 
# skicka e-post till dig själv och informera dig om priset på kameran
förbindelse.sendmail ('avsändarens e-postadress', 'mottagarens e-postadress',
'Ämne: Du kan köpa kameran')
 
# avslutar anslutning
förbindelse.sluta()
# e-postfunktionen slutar här
 
# lanserar Google Chrome genom att ange sökvägen till chromedriver som ett argument
drivrutin = webdriver.Chrome ('sökväg till chromedriver')
 
# minimerar kromfönstret
förare.minimize_window ()
 
# öppningsgaller.pk-webbplats
förare.skaffa sig('https: // www.daraz.pk /')
 
# lokaliseringselement i sökfältet med id-attribut för att söka efter kamera
sökfält = drivrutin.find_element_by_id ('q')
 
#skrivkamera i sökfältet
sökruta.send_keys ('kamera')
 
#locating search button element using xpath of element
sök = förare.hitta_element_by_xpath ('// * [@ id = "topActionHeader"] / div / div [2] / div / div [2]
/ form / div / div [2] / knapp ')
 
#klicka på sökknappen
Sök.klick()
 
# lokaliseringselement för önskad produkt med hjälp av attributet xpath
produkt = drivrutin.hitta_element_by_xpath ('// * [@ id = "root"] / div / div [3] / div [1] / div / div [1]
/ div [2] / div [1] / div / div / div [2] / div [2] / a ')
 
# klicka på önskad produkt
produkt.klick()
 
# lokaliserar priselement med attributet xpath
pris = förare.find_element_by_xpath ('// * [@ id = "module_product_price_1"] / div / div / span')
 
# extraherar text från priselement. Detta ger priset på produkten som 'Rs. 24.500 '
pris = pris.text
 
# omvandlar pris till sträng
Pris = str (pris)
 
# definierar en tom matris. Detta kommer att användas för att extrahera siffror från pris som '24500'
bilda 'Rs. 24.500 '
num = []
 
# läser alla poster i prissträng en efter en med hjälp av for loop
för x i pris:
 
# kontrollerar om posten är siffra eller inte eftersom vi bara vill ha siffror i pris
om x.isdigit ():
 
# lägger bara till siffror i numlistan
antal.bifoga (x)
 
# sammanfogar alla poster i numlistan. Nu är priset en sträng som endast innehåller siffror
pris = ".gå med (num)
 
# konverterar prissträng till heltal
pris = int (pris)
 
# kontrollera om priset är överkomligt eller inte
om pris <= 25000:
 
# ringer postfunktion för att informera dig om priset
post()
 
# stänger webbläsare
förare.sluta()

Ovanstående kod öppnas daraz.pk-webbplats och söker efter kameran och informerar dig via e-post om priset är överkomligt. Först och främst importerade vi SELEN och SMTPLIB moduler. Sedan definierade vi 'mail' -funktionen som skickar dig e-post och informerar dig om att priset är överkomligt, när du ringer.

Efter detta öppnade vi Chrome-webbläsare med chromedriver och sökte efter 'daraz.pk '. Sedan hittar vi vår önskade produkt med hjälp av element och deras attribut. Hur element hittas och lokaliseras har beskrivits ovan. Priset vi fick var en sträng så vi konverterade den här strängen till heltal och kontrollerade sedan om priset är överkomligt eller inte. Om priset är överkomligt kan du ringa e-postfunktionen.

Skapar Cron-jobb

Över två automatiseringsskript krävs för att köras en gång om dagen vid en viss tidpunkt. Vi kan hantera detta med cron-jobb. Uppgifter som läggs till i crontab kan köras vid en viss tid upprepade gånger. För att lägga till ovanstående uppgifter i crontab, kör först och främst följande kommando i Linux Terminal.

[e-postskyddad]: ~ $ crontab -e

Ovanför kommandot öppnas crontab-filen för redigering. I slutet av filen anger du följande kommando.

0 8 * * * python / sökväg / till / python / skript

Vi ser poster före kommando från höger till vänster.

Så det här kommandot körs klockan 8 varje dag.

Slutsats

I den här artikeln diskuterade vi hur du kan använda SELEN tillsammans med Python för att automatisera din webbläsare med olika tekniker. Du kan automatisera ditt dagliga rutinarbete, fylla i formulär, ladda ner dina saker och många saker med det. Vi diskuterade bara två exempel här, men du kan automatisera varje sak som en människa kan göra manuellt med webbläsaren.

Hur man använder GameConqueror Cheat Engine i Linux
Artikeln täcker en guide om hur du använder GameConqueror-fuskmotorn i Linux. Många användare som spelar spel på Windows använder ofta applikationen "...
Bästa spelkonsolemulatorer för Linux
Den här artikeln listar populära spelkonsolemuleringsprogram som finns tillgängliga för Linux. Emulation är ett mjukvarukompatibilitetsskikt som emule...
Bästa Linux Distros för spel 2021
Linux-operativsystemet har kommit långt från sitt ursprungliga, enkla, serverbaserade utseende. Detta operativsystem har förbättrats enormt de senaste...