Selen

Spletna avtomatizacija selena s Pythonom

Spletna avtomatizacija selena s Pythonom
Vsi na enem ali drugem mestu uporabljajo splet, zato je razvijalcem velik poziv, da zagotovijo, da njihove spletne aplikacije delujejo, kot je predvideno. Za to bi lahko bila v veliko pomoč spletna avtomatizacija.

Da bo komercialna programska oprema uspešna, mora opraviti nekaj testov. Avtomatizacija bi lahko bila koristna za uporabniške teste, ki bi simulirala uporabo programske opreme, tako kot uporabnik. Prav tako je uporaben za teste penetracije, kot je poskušanje razbijanja gesel, izvajanje vbrizgavanja SQL itd.

Poleg testiranja je spletna avtomatizacija lahko zelo priročna za strganje težkih spletnih mest z JavaScriptom.

Selen je eno najučinkovitejših orodij za spletno avtomatizacijo. Zelo priljubljen je tudi med različnimi jeziki in je na voljo v jezikih, kot sta Java in JavaScript.

Namestitev

Selen lahko namestite v python z uporabo pip modula, kot je prikazano v spodnjem ukazu:

pip namestite selen

Namestil bi knjižnico in potrebne odvisnosti, namestitev lahko potrdite z uvozom v interaktivni seji.

$ python
Python 3.5.2 (privzeto, 14. september 2017, 22:51:06)
[GCC 5.4.0 20160609] na Linuxu
Za več informacij vnesite "pomoč", "avtorske pravice", "dobropisi" ali "licenca".
>>> uvoz selena

Ker ni prišlo do napake, pomeni, da je bila naša namestitev uspešna. Vendar se tu še ne konča; to je zato, ker selen deluje z roko v roki z brskalniki, kot sta Chrome in Firefox, in potrebuje gonilnik iz brskalnika, da lahko nadaljuje s svojimi nalogami.

Ogledali si bomo, kako namestiti gonilnike. Za Mozilla Firefox lahko prenesete njegov gonilnik, znan kot geckodriver na strani github. Če uporabljate Chrome, lahko prenesete njegov gonilnik, znan kot kromedriver na uradni strani.

Po prenosu nato na pot dodate gonilnik. Osebno bi rad takšno datoteko hranil v svojem / usr / local / bin imenik, in svetoval bi vam, da storite enako.

Če želite storiti enako, naj ga spodnji ukaz premakne iz vašega trenutnega imenika v zabojnik imenik.

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

Dodati geckodriver ali kromedriver za pot iz tega imenika zaženite naslednji ukaz.

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

Ko na pot dodate gonilnik želenega brskalnika, lahko potrdite, ali vse deluje v redu, tako da iz interaktivne seje zaženete naslednje.

Za Firefox:

$ python
Python 3.5.2 (privzeto, 14. september 2017, 22:51:06)
[GCC 5.4.0 20160609] v Linuxu
Za več informacij vnesite "pomoč", "avtorske pravice", "dobropisi" ali "licenca".
>>> iz spletnega pogona za uvoz selena
>>> spletni pogon.Firefox ()

Za Chrome:

$ python
Python 3.5.2 (privzeto, 14. september 2017, 22:51:06)
[GCC 5.4.0 20160609] v Linuxu
Za več informacij vnesite "pomoč", "avtorske pravice", "dobropisi" ali "licenca".
>>> iz spletnega pogona za uvoz selena
>>> gonilnik = spletni voznik.Chrome ()

Po zagonu, če se prikaže brskalnik, vse deluje v redu. Zdaj lahko nadaljujemo s kul zadevami s selenom.

Večina kode za preostanek tega članka bi bila narejena v interaktivni seji, lahko pa jo napišete v datoteko, tako kot običajni skript python.

Prav tako bi delali na voznik spremenljivka iz zgornje kode.

Ogled spletnih strani

Ko je spletna stran odprta, lahko katero koli spletno stran obiščete tako, da pokličete dobili metoda na voznik. Odprti brskalnik nato naloži naslov, tako kot bi to storil sam.

Ne pozabite uporabiti http: // ali https: //, sicer bi se morali spoprijeti z neprijetnimi napakami.

>>> voznik.get ("http: // google.com ")

S tem bi se naložila Googlova domača stran.

Pridobivanje izvorne kode

Zdaj, ko smo se naučili obiskovati spletne strani, lahko s obiskane spletne strani strgamo podatke.

Iz voznik predmeta, lahko dobimo izvorno kodo s klicem page_source atribut, lahko s pomočjo html s knjižnico BeautifulSoup naredite kar koli želite.

>> voznik.page_source

Polnjenje besedilnih polj

Če smo na primer naložili Googlovo domačo stran in želimo v iskalno polje vnesti nekaj informacij; to je enostavno mogoče storiti.

Za to z elementom preglednika preverimo izvorno kodo in si ogledamo informacije o oznakah iskalnega polja. Če želite to narediti, preprosto z desno miškino tipko kliknite iskalno polje in izberite Preglej element.

Na svojem računalniku sem dobil naslednje:

value = "" aria-label = "Search" aria-haspopup = "false" role = "combobox" aria-autocomplete = "list"
style = "border: medium none; padding: 0px; margin: 0px; height: auto; width: 100%;
ozadje: prozorno
url ("data: image / gif; base64, R0lGODlhAQABAID / AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEA
Ow% 3D% 3D ") ponovite drsenje 0% 0%; položaj: absolutno; z-indeks: 6; levo: 0px; oris:
srednja nobena; "dir =" ltr "spellcheck =" false "type =" text ">

S selenom lahko elemente izbiramo po imenu oznake, ID-ju, imenu razreda itd.

Lahko jih izvedemo z naslednjimi metodami:

.find_element_by_id
.find_element_by_tag_name
.find_element_by_class_name
.find_element_by_name

Na Googlovi spletni strani ima iskalno polje ID lst-ib, tako bi našli element po id.

>>> polje iskanja = gonilnik.find_element_by_id ("lst-ib")

Zdaj, ko smo našli element in ga shranili v iskalno polje spremenljivko, lahko v iskalnem polju izvedemo nekatere operacije.

>>> polje za iskanje.send_keys ("Planet Zemlja")

S tem bi v polje vnesli besedilo »Planet Earth«.

>>> polje za iskanje.jasno ()

S tem bi vneseno besedilo počistili iz iskalnega polja. Uporabite send_keys znova, v naslednjem razdelku bi kliknili gumb za iskanje, da bomo imeli kaj iskati.

Klik na desni gumb

Zdaj, ko smo napolnili iskalno polje z nekaj informacijami, lahko nadaljujemo z iskanjem.

Na enak način, kot smo našli iskalno polje, bomo našli iskalni gumb.

Na svojem računalniku sem dobil naslednje:

type = "submit">

Če pogledamo to, lahko uporabimo atribut name. Lahko ga dobimo s spodnjo kodo:

>>> gumb iskanja = gonilnik.find_element_by_name ("btnK")

Po iskanju želene oznake lahko nato kliknemo gumb s pomočjo kliknite metoda.

>>> gumb za iskanje.kliknite ()

Vendar bodite previdni, ker lahko Googlovi samodejni predlogi na koncu poiščete kaj drugega.

Če želite to zaobiti, morate tipkovnico takoj pritisniti na tipko enter. Tipke sicer ne spadajo v področje tega članka, toda tukaj je vseeno koda.

>>> iz selena.spletni pogon.običajni.tipke za uvoz ključev
>>> polje iskanja = gonilnik.find_element_by_id ("lst-ib")
>>> polje za iskanje.send_keys ("Planet Zemlja")
>>> polje za iskanje.send_keys (Tipke.VRNITEV)

Z zgornjo kodo nam ni treba klikniti gumba za iskanje. Deluje tako, kot če bi po vnosu iskalnih vrednosti pritisnili tipko enter.

Ta način klikanja buttosn ne deluje samo z gumbi, temveč tudi s povezavami.

Posnetek zaslona

Prav ste prebrali! Posnamete lahko posnetke zaslona s selenom in je tako enostavno kot prejšnji razdelki.

Kar poklicali bomo shrani_screenshot na gonilniškem objektu, nato vnesemo ime slike in posname se posnetek zaslona.

>>> voznik.save_screenshot ("Planet-earth.png ")

Prepričajte se, da ime slike vsebuje .razširitev png, sicer lahko pride do poškodovane slike.

Ko končate z operacijami, lahko brskalnik zaprete tako, da zaženete naslednjo kodo:

>>> voznik.zapri ()

Zaključek

Selen je znan kot zelo zmogljivo orodje in njegova sposobnost uporabe šteje za ključno veščino preizkuševalcev avtomatizacije. Selen lahko naredi veliko več, kot je razloženo v tem članku, premike tipkovnice lahko dejansko ponovimo, kot je prikazano z Ključi.VRNITEV. Če želite izvedeti več o selenu, ga lahko preverite dokumentacijo, je povsem jasen in enostaven za uporabo.

Brezplačni in odprtokodni igralni mehanizmi za razvoj iger Linux
Ta članek bo zajemal seznam brezplačnih in odprtokodnih igralnih mehanizmov, ki jih je mogoče uporabiti za razvoj 2D in 3D iger v Linuxu. Obstaja veli...
Vadnica Shadow of the Tomb Raider za Linux
Shadow of the Tomb Raider je dvanajsti dodatek k seriji Tomb Raider - franšiza akcijsko-pustolovskih iger, ki jo je ustvaril Eidos Montreal. Kritiki i...
Kako povečati FPS v Linuxu?
FPS pomeni Število sličic na sekundo. Naloga FPS je merjenje hitrosti sličic pri predvajanju video posnetkov ali igranih predstavah. Z enostavnimi bes...