Selenium

Automatska automatizacija selena s Pythonom

Automatska automatizacija selena s Pythonom
Svatko u jednom ili drugom trenutku koristi web, tako da je ogroman poziv za programere da osiguraju da njihove web aplikacije funkcioniraju kako je predviđeno. Inače, web automatizacija može biti od velike pomoći.

Da bi bilo koji komercijalni softver bio uspješan, mora proći nekoliko testova. Automatizacija bi mogla biti korisna za korisničke testove, simulirajući upotrebu softvera baš kao što bi to učinio korisnik. Također je korisno za testove penetracije, poput pokušaja provaljivanja lozinki, izvršavanja SQL injekcija itd.

Osim testiranja, web automatizacija mogla bi biti vrlo korisna za struganje JavaScript teških web stranica.

Selen je jedan od najučinkovitijih alata za web automatizaciju. Vrlo je popularan i među različitim jezicima, dostupan na jezicima kao što su Java, JavaScript.

Montaža

Selen se može instalirati u python pomoću pip modula kako je prikazano u naredbi ispod:

pip instaliraj selen

Instalirao bi knjižnicu i potrebne ovisnosti, instalaciju je moguće potvrditi uvozom u interaktivnoj sesiji.

$ python
Python 3.5.2 (zadano, 14. rujna 2017., 22:51:06)
[OUU 5.4.0 20160609] na Linuxu
Upišite "pomoć", "autorska prava", "krediti" ili "licenca" za više informacija.
>>> uvoz selena

Budući da nije došlo do pogreške, to znači da je naša instalacija bila uspješna. Međutim, tu nije kraj; to je zato što selen radi ruku pod ruku s preglednicima kao što su Chrome i Firefox i potreban mu je upravljački program iz preglednika da bi mogao nastaviti sa svojim zadaćama.

Pogledat ćemo kako instalirati upravljačke programe. Za Mozilla Firefox možete preuzeti upravljački program poznat kao geckodriver sa stranice github. Ako ste korisnik Chromea, možete preuzeti upravljački program poznat kao kromedriver sa službene stranice.

Nakon preuzimanja na put dodate upravljački program. Osobno bih volio takvu datoteku zadržati u svom / usr / local / bin imenik, i savjetovao bih vam da to učinite.

Ako želite učiniti isto, naredba u nastavku trebala bi ga premjestiti iz vašeg trenutnog direktorija u kanta za smeće imenik.

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

Dodati geckodriver ili kromedriver za put iz tog direktorija pokrenite sljedeću naredbu.

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

Nakon dodavanja upravljačkog programa za željeni preglednik na stazu, možete potvrditi radi li sve u redu pokretanjem sljedećeg iz interaktivne sesije.

Za Firefox:

$ python
Python 3.5.2 (zadano, 14. rujna 2017., 22:51:06)
[OUU 5.4.0 20160609] na Linuxu
Upišite "pomoć", "autorska prava", "krediti" ili "licenca" za više informacija.
>>> s web-drajvera za uvoz selena
>>> webdriver.Firefox ()

Za Chrome:

$ python
Python 3.5.2 (zadano, 14. rujna 2017., 22:51:06)
[OUU 5.4.0 20160609] na Linuxu
Upišite "pomoć", "autorska prava", "krediti" ili "licenca" za više informacija.
>>> s web-drajvera za uvoz selena
>>> upravljački program = webdriver.Krom()

Nakon pokretanja, ako se pojavi preglednik, sve radi u redu. Sada možemo nastaviti raditi super stvari sa selenom.

Većina koda za ostatak ovog članka radit će se u interaktivnoj sesiji, no možete ga napisati u datoteku baš kao i vaša uobičajena python skripta.

Također, radili bismo na vozač varijabla iz gornjeg koda.

Posjećivanje web stranica

Nakon otvaranja web stranice, možete posjetiti bilo koju web stranicu pozivom na dobiti metoda na vozač. Otvoreni preglednik zatim učitava prosljeđenu adresu, baš kao i kad to učinite sami.

Ne zaboravite koristiti http: // ili https: //, inače biste se morali nositi s neugodnim pogreškama.

>>> vozač.get ("http: // google.com ")

Ovo bi učitalo Googleovu početnu stranicu.

Dobivanje izvornog koda

Sad kad smo naučili posjećivati ​​web stranice, možemo strugati podatke s posjećene web stranice.

Od vozač objekt, izvorni kod možemo dobiti pozivom page_source atribut, tada možete raditi što god želite s html-om koristeći knjižnicu BeautifulSoup.

>> vozač.page_source

Popunjavanje tekstualnih okvira

Ako smo, na primjer, učitali Googleovu početnu stranicu i želimo unijeti neke podatke u okvir za pretraživanje; to se lako može učiniti.

Da bismo to učinili, koristimo element inspektora za provjeru izvornog koda i prikaz podataka o oznakama u okviru za pretraživanje. Da biste to učinili, jednostavno kliknite desnom tipkom miša na okvir za pretraživanje i odaberite pregledati element.

Na svom sam stroju dobio sljedeće:

value = "" aria-label = "Search" aria-haspopup = "false" role = "combobox" aria-autocomplete = "list"
style = "border: medium none; padding: 0px; margin: 0px; height: auto; width: 100%;
pozadina: prozirna
url ("podaci: slika / gif; base64, R0lGODlhAQABAID / AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEA
Ow% 3D% 3D ") ponovite pomicanje 0% 0%; položaj: apsolutno; z-indeks: 6; lijevo: 0px; obris:
srednje nema; "dir =" ltr "provjera pravopisa =" lažno "tip =" tekst ">

Pomoću selena možemo odabrati elemente prema nazivu oznake, ID-u, nazivu klase itd.

Mogu se implementirati sljedećim metodama:

.find_element_by_id
.find_element_by_tag_name
.find_element_by_class_name
.find_element_by_name

Na google web stranici okvir za pretraživanje ima id lst-ib, pa bismo element pronašli po id-u.

>>> okvir za pretraživanje = upravljački program.find_element_by_id ("lst-ib")

Sad kad smo pronašli element i spremili ga u okvir za pretraživanje varijabla, možemo izvršiti neke operacije na okviru za pretraživanje.

>>> okvir za pretraživanje.send_keys ("Planet Zemlja")

To bi unijelo tekst "Planet Zemlja" u okvir.

>>> okvir za pretraživanje.čisto()

Ovo bi očistilo uneseni tekst iz okvira za pretraživanje. Trebali biste koristiti send_keys ponovno u sljedećem odjeljku kliknuli bismo gumb za pretraživanje kako bismo imali što pretraživati.

Klikom na desne gumbe

Sad kad smo polje za pretraživanje napunili nekim informacijama, možemo ići dalje i pretraživati.

Na isti način na koji smo pronašli okvir za pretraživanje, na isti ćemo način pronaći i gumb za pretraživanje.

Na svom sam stroju dobio sljedeće:

type = "submit">

Gledajući ovo možemo iskoristiti atribut name. Do njega možemo doći pomoću donjeg koda:

>>> gumb_za pretragu = upravljački program.find_element_by_name ("btnK")

Nakon pronalaska željene oznake, možemo kliknuti gumb pomoću klik metoda.

>>> tipka_pretraga.klik()

Budite oprezni, jer zbog Googleovih automatskih prijedloga na kraju možete potražiti nešto drugo.

Da biste to zaobišli, morate odmah pritisnuti tipkovnicu da pritisne tipku enter. Ključevi su izvan dosega ovog članka, ali ovdje je svejedno kôd.

>>> od selena.mrežni pogonitelj.uobičajen.tipke uvoz ključeva
>>> okvir za pretraživanje = upravljački program.find_element_by_id ("lst-ib")
>>> okvir za pretraživanje.send_keys ("Planet Zemlja")
>>> okvir za pretraživanje.send_keys (Tipke.POVRATAK)

S gornjim kodom ne moramo kliknuti gumb za pretraživanje. Djeluje baš kao kad bi pritisnuli tipku enter nakon unosa vrijednosti pretraživanja.

Ova metoda klikanja buttosna ne radi samo s gumbima, već i s vezama.

Snimanje zaslona

Dobro ste pročitali! Snimke zaslona možete snimati pomoću selena, a to je jednostavno kao i prethodni odjeljci.

Ono što ćemo učiniti je nazvati snimka zaslona metodu na objektu upravljačkog programa, tada bismo proslijedili ime slike i snimio bi se snimak zaslona.

>>> vozač.save_screenshot ("Planet-earth.png ")

Provjerite ima li naziv slike znak .png proširenje, inače biste mogli završiti s oštećenom slikom.

Kada završite s operacijama, možete zatvoriti preglednik pokretanjem sljedećeg koda:

>>> vozač.Zatvoriti()

Zaključak

Selen je poznat kao vrlo moćan alat, a mogućnost korištenja smatra se vitalnom vještinom za ispitivače automatizacije. Selen može učiniti mnogo više nego što je raspravljeno u ovom članku, pokreti tipkovnice zapravo se mogu preslikati kako je prikazano Ključevi.POVRATAK. Ako želite saznati više o selenu, možete ga provjeriti dokumentacija, sasvim je jasan i jednostavan za upotrebu.

Korisni alati za Linux igrače
Ako volite igrati igre na Linuxu, velika je vjerojatnost da ste možda koristili aplikacije i uslužne programe poput Wine, Lutris i OBS Studio za pobol...
HD Remastered igre za Linux koje ranije nisu imale Linux izdanje
Mnogi programeri i izdavači igara dolaze s HD remasterom starih igara kako bi produžili životni vijek franšize, molimo obožavatelje da zatraže kompati...
Kako koristiti AutoKey za automatizaciju Linux igara
AutoKey je uslužni program za automatizaciju radne površine za Linux i X11, programiran na Python 3, GTK i Qt. Koristeći njegovu skriptiranje i MACRO ...