Selen

Selen Web Automation med Python

Selen Web Automation med Python
Alla använder webben vid en eller annan punkt, så det är ett stort samtal för utvecklare att se till att deras webbapplikationer fungerar som avsett. För att göra detta kan webbautomation vara till stor hjälp.

För att kommersiell programvara ska lyckas måste den genomgå ett par tester. Automation kan vara användbart för användartester, simulera användningen av programvara precis som en användare skulle göra. Det är också användbart för penetrationstest, som att försöka knäcka lösenord, utföra SQL-injektioner etc.

Förutom testning kan webbautomation vara mycket praktiskt för att skrapa JavaScript-tunga webbplatser.

Selen är ett av de mest effektiva verktygen för webbautomation. Det är också mycket populärt bland olika språk, tillgängligt på språk som Java, JavaScript.

Installation

Selen kan installeras i python med pip-modulen som visas i kommandot nedan:

pip installera selen

Det skulle installera biblioteket och beroenden som behövs, installationen kan bekräftas genom att importera den i en interaktiv session.

$ python
Python 3.5.2 (standard, 14 september 2017, 22:51:06)
[GCC 5.4.0 20160609] på Linux
Skriv "hjälp", "copyright", "credits" eller "licens" för mer information.
>>> importera selen

Eftersom inget fel uppstod betyder det att vår installation lyckades. Men det slutar inte där; detta beror på att selen fungerar hand i hand med webbläsare som Chrome och Firefox och det behöver en drivrutin från webbläsaren för att kunna fortsätta med sina uppgifter.

Vi kommer att ta en titt på hur man får drivrutinerna installerade. För Mozilla Firefox kan du ladda ner dess drivrutin som kallas geckodriver från github-sidan. Om du är Chrome-användare kan du ladda ner drivrutinen som kallas kromförare från den officiella webbplatsen.

Efter nedladdning lägger du sedan till drivrutinen till sökvägen. Personligen skulle jag vilja behålla en sådan fil i min / usr / local / bin katalog, och jag skulle råda dig att göra detsamma.

Om du vill göra samma sak ska kommandot nedan flytta det från din nuvarande katalog till soptunna katalog.

$ sudo mv geckodriver / usr / local / bin
$ sudo mv chromedriver / usr / local / bin

Tillägga geckodriver eller kromförare för att komma från den katalogen, kör följande kommando.

$ export PATH = $ PATH: / usr / local / bin / geckodriver
$ export PATH = $ PATH: / usr / local / bin / chromedriver

När du har lagt till drivrutinen för din önskade webbläsare till sökvägen kan du bekräfta om allt fungerar bra genom att köra följande från en interaktiv session.

För Firefox:

$ python
Python 3.5.2 (standard, 14 september 2017, 22:51:06)
[GCC 5.4.0 20160609] på Linux
Skriv "hjälp", "copyright", "credits" eller "licens" för mer information.
>>> från selenimportwebdriver
>>> webbdrivare.Firefox ()

För Chrome:

$ python
Python 3.5.2 (standard, 14 september 2017, 22:51:06)
[GCC 5.4.0 20160609] på Linux
Skriv "hjälp", "copyright", "credits" eller "licens" för mer information.
>>> från selenimportwebdriver
>>> drivrutin = webdriver.Krom()

Efter att ha kört det, om en webbläsare dyker upp, fungerar allt bra. Nu kan vi fortsätta att göra coola saker med Selen.

Det mesta av koden för resten av den här artikeln skulle göras i den interaktiva sessionen, men du kan skriva den i en fil precis som ditt vanliga python-skript.

Vi skulle också arbeta med förare variabel från koden ovan.

Visting webbsidor

När webbsidan är öppen kan du besöka vilken webbsida som helst genom att ringa skaffa sig metod på förare. Den öppnade webbläsaren laddar sedan in den skickade adressen, precis som när du gör det själv.

Glöm inte att använda http: // eller https: //, annars måste du hantera obehagliga fel.

>>> förare.få ("http: // google.com ")

Detta skulle ladda Googles startsida.

Få källkod

Nu när vi har lärt oss att besöka webbsidor kan vi skrapa data från den besökta webbsidan.

Från förare objekt kan vi få källkoden genom att ringa sidkälla attribut kan du sedan göra vad du än vill med html med hjälp av BeautifulSoup-biblioteket.

>> förare.sidkälla

Fylla textrutor

Om vi ​​till exempel har laddat Googles startsida och vi vill skriva in lite information i sökrutan; det kan enkelt göras.

För att göra detta använder vi inspektörelementet för att kontrollera källkoden och se tagginformationen i sökrutan. För att göra detta, högerklicka helt enkelt på sökrutan och välj inspektera elementet.

På min maskin fick jag följande:

value = "" aria-label = "Sök" aria-haspopup = "false" role = "combobox" aria-autocomplete = "list"
style = "border: medium none; padding: 0px; margin: 0px; höjd: auto; bredd: 100%;
bakgrund: transparent
url ("data: image / gif; base64, R0lGODlhAQABAID / AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEA
Ow% 3D% 3D ") upprepa bläddra 0% 0%; position: absolut; z-index: 6; vänster: 0px; disposition:
medium ingen; "dir =" ltr "stavningskontroll =" falsk "typ =" text ">

Med selen kan vi välja element antingen efter taggnamn, id, klassnamn etc.

De kan implementeras med följande metoder:

.hitta_element_by_id
.hitta_element_by_tag_name
.hitta_element_med_klassnamn
.hitta_element_by_name

Från Googles webbsida har sökrutan ett ID första-ib, så vi skulle hitta element efter id.

>>> search_box = drivrutin.hitta_element_by_id ("lst-ib")

Nu när vi har hittat elementet och sparat det i a sökruta variabel kan vi få utföra vissa operationer i sökrutan.

>>> sökruta.send_keys ("Planet Earth")

Detta skulle skriva in texten ”Planet Earth” i rutan.

>>> sökruta.klar()

Detta skulle rensa den inmatade texten från sökrutan. Du bör använda send_keys metod igen, i nästa avsnitt skulle vi klicka på sökknappen så att vi har något att söka efter.

Klicka på höger knappar

Nu när vi har fyllt i sökrutan med lite information kan vi gå vidare och söka.

På samma sätt som vi hittade sökrutan är samma sätt som vi kommer att hitta sökknappen.

På min maskin fick jag följande:

typ = "skicka">

Om vi ​​tittar på detta kan vi använda namnet attributet. Vi kan få det genom att använda koden nedan:

>>> sök_knapp = förare.hitta_element_by_name ("btnK")

Efter att ha hittat önskad tagg kan vi sedan klicka på knappen med klick metod.

>>> sök_knapp.klick()

Var dock försiktig, på grund av Googles automatiska förslag kan du sluta leta efter något annat.

För att kringgå detta måste du få tangentbordet att slå Enter-tangenten omedelbart. Nycklar ligger utanför denna artikel, men här är koden ändå.

>>> från selen.webbdrivare.allmänning.nycklar importerar nycklar
>>> search_box = drivrutin.hitta_element_by_id ("lst-ib")
>>> sökruta.send_keys ("Planet Earth")
>>> sökruta.send_keys (nycklar.LÄMNA TILLBAKA)

Med koden ovan behöver vi inte klicka på sökknappen. Det fungerar precis som när vi trycker på Enter-tangenten efter att ha skrivit in sökvärdena.

Denna metod för att klicka på buttosn fungerar inte bara med knappar, det fungerar också med länkar.

Ta skärmdumpar

Du läste rätt! Du kan ta skärmdumpar med selen, och det är lika enkelt som tidigare avsnitt.

Vad vi ska göra är att ringa save_screenshot metod på drivrutinsobjektet, skulle vi sedan skicka in bildens namn och skärmdumpen skulle tas.

>>> förare.save_screenshot ("Planet-earth.png ")

Se till att bildnamnet har en .png-tillägg, annars kan du få en skadad bild.

När du är klar med operationerna kan du stänga webbläsaren genom att köra följande kod:

>>> förare.stänga()

Slutsats

Selen är känt som ett mycket kraftfullt verktyg och att kunna använda det anses vara en viktig färdighet för automatiseringstestare. Selen kan göra mycket mer än vad som diskuterats i den här artikeln, tangentbordsrörelser kan faktiskt replikeras som visas med Nycklar.LÄMNA TILLBAKA. Om du vill lära dig mer om selen kan du kolla in det dokumentation, det är ganska tydligt och lätt att använda.

HD Remastered Games för Linux som aldrig tidigare hade en Linux-version
Många spelutvecklare och utgivare kommer med HD-remaster av gamla spel för att förlänga livstiden för franchisen, snälla fans som begär kompatibilitet...
Hur man använder AutoKey för att automatisera Linux-spel
AutoKey är ett verktyg för desktopautomatisering för Linux och X11, programmerat i Python 3, GTK och Qt. Med hjälp av dess skript och MACRO-funktional...
Hur man visar FPS-räknare i Linux-spel
Linux-spel fick ett stort tryck när Valve tillkännagav Linux-stöd för Steam-klient och deras spel 2012. Sedan dess har många AAA- och indiespel tagit ...