Selenium

Seleeni veebiautomaatika Pythoniga

Seleeni veebiautomaatika Pythoniga
Kõik kasutavad veebi ühel või teisel hetkel, seega on arendajatele tohutu üleskutse tagada, et nende veebirakendused toimiksid ettenähtud viisil. Muul juhul võiks veebiautomaatika olla väga kasulik.

Mis tahes kommertstarkvara edukaks saamiseks peab see läbima paar katset. Automaatika võib olla kasulik kasutaja testide jaoks, simuleerides tarkvara kasutamist täpselt nii, nagu kasutaja seda teeks. See on kasulik ka levitustestide jaoks, näiteks paroolide lõhkumiseks, SQL-i süstimiseks jne.

Peale testimise võib veebiautomaatika olla väga mugav JavaScripti raskete veebisaitide kraapimiseks.

Seleen on üks tõhusamaid veebiautomaatika tööriistu. See on väga populaarne ka erinevate keelte seas, saadaval sellistes keeltes nagu Java, JavaScript.

Paigaldamine

Seleeni saab pythoni installida pip-mooduli abil, nagu on näidatud allolevas käsus:

pip paigaldage seleen

See installiks teegi ja vajalikud sõltuvused, installimist saab kinnitada interaktiivse seansi kaudu importides.

$ python
Python 3.5.2 (vaikimisi, 14. september 2017, 22:51:06)
[GCC 5.4.0 20160609] Linuxis
Lisateabe saamiseks sisestage "abi", "autoriõigus", "krediit" või "litsents".
>>> seleeni import

Kuna viga ei ilmnenud, tähendab see, et meie installimine õnnestus. Sellega see siiski ei lõpe; seda seetõttu, et seleen töötab käsikäes selliste brauseritega nagu Chrome ja Firefox ning oma ülesannete täitmiseks vajab see brauserist draiverit.

Vaatame, kuidas draivereid installida. Mozilla Firefoxi jaoks saate selle draiveri alla laadida gekodraiver githubi lehelt. Kui olete Chrome'i kasutaja, saate selle draiveri alla laadida kromedriver ametlikult saidilt.

Pärast allalaadimist lisate draiveri teele. Isiklikult tahaksin sellist faili enda kaustas hoida / usr / local / bin kataloogi ja soovitaksin teil seda teha.

Kui soovite sama teha, peaks alltoodud käsk teisaldama selle teie praegusest kataloogist kataloogi prügikast kataloogi.

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

Lisama gekodraiver või kromedriver sellest kataloogist tee saamiseks käivitage järgmine käsk.

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

Pärast soovitud brauseri draiveri lisamist teele saate kinnitada, kas kõik töötab hästi, käivitades järgmise interaktiivse seansi kaudu.

Firefoxi jaoks:

$ python
Python 3.5.2 (vaikimisi, 14. september 2017, 22:51:06)
[GCC 5.4.0 20160609] Linuxis
Lisateabe saamiseks sisestage "abi", "autoriõigus", "krediit" või "litsents".
>>> seleeni importimise veebidraiverilt
>>> veebidraiver.Firefox ()

Chrome'i jaoks:

$ python
Python 3.5.2 (vaikimisi, 14. september 2017, 22:51:06)
[GCC 5.4.0 20160609] Linuxis
Lisateabe saamiseks sisestage "abi", "autoriõigus", "krediit" või "litsents".
>>> seleeni importimise veebidraiverilt
>>> draiver = veebidraiver.Chrome ()

Pärast selle käivitamist töötab kõik, kui brauser töötab, hästi. Nüüd saame jätkata seleeniga lahedaid asju.

Suurem osa ülejäänud artikli koodist tehakse interaktiivses seansis, kuid võite selle kirjutada faili nagu tavaline pythoni skript.

Samuti töötaksime autojuht muutuja ülaltoodud koodist.

Veebilehtede vaatamine

Kui veebileht on avatud, saate külastada mis tahes veebisaiti, helistades aadressile saada meetod sisse autojuht. Avatud brauser laadib seejärel sisestatud aadressi täpselt samamoodi nagu siis, kui teete seda ise.

Ärge unustage kasutada http: // või https: //, muidu peate toime tulema ebameeldivate vigadega.

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

See laadiks Google'i kodulehe.

Lähtekoodi hankimine

Nüüd, kui oleme õppinud veebisaite külastama, saame külastatud veebisaidilt andmeid kraapida.

Alates autojuht objekti, saame lähtekoodi, helistades aadressile page_source atribuudi abil saate siis HTML-iga kasutades BeautifulSoupi teeki teha mida iganes soovite.

>> juht.page_source

Tekstikastide täitmine

Kui oleme näiteks laadinud Google'i kodulehe ja tahame otsingukasti sisestada mõne teabe; seda saab lihtsalt teha.

Selleks kasutame inspektorielementi lähtekoodi kontrollimiseks ja otsingukasti märgendi teabe nägemiseks. Selleks lihtsalt paremklõpsake otsingukastil ja valige kontrollida elementi.

Oma masinas sain järgmise:

value = "" aria-label = "Otsi" aria-haspopup = "false" role = "combobox" aria-autocomplete = "list"
style = "ääris: keskmine puudub; polster: 0px; veeris: 0px; kõrgus: automaatne; laius: 100%;
taust: läbipaistev
url ("andmed: image / gif; base64, R0lGODlhAQABAID / AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEA
Ow% 3D% 3D ") kordage kerimist 0% 0%; positsioon: absoluutne; z-indeks: 6; vasakul: 0px; kontuur:
meedium puudub; "dir =" ltr "spellcheck =" false "type =" text ">

Seleeni abil saame elemente valida kas sildi nime, ID, klassi nime jne järgi.

Neid saab rakendada järgmiste meetoditega:

.find_element_by_id
.find_element_by_tag_name
.find_element_by_class_name
.find_element_by_name

Google'i veebilehelt on otsingukastil ID lst-ib, nii et leiame elemendi ID järgi.

>>> search_box = draiver.find_element_by_id ("lst-ib")

Nüüd, kui oleme elemendi leidnud ja selle a otsingukast muutujaga, saame otsingukastil teha mõned toimingud.

>>> otsingu kast.send_keys ("Maa planeet")

See sisestaks kasti teksti "Maa planeet".

>>> otsingu kast.selge ()

See tühjendaks sisestatud teksti otsingukastist. Peaksite kasutama saatmisvõtmed meetodi uuesti klõpsamiseks järgmises jaotises klõpsake otsingu nuppu, et meil oleks midagi otsida.

Klõpsates parempoolseid nuppe

Nüüd, kui oleme otsingukasti mõne teabega täitnud, saame otsida.

Samamoodi, nagu leidsime otsingukasti, on samamoodi ka otsingunupp.

Oma masinas sain järgmise:

type = "esita">

Seda vaadates saame kasutada nime atribuuti. Selle saame alloleva koodi abil:

>>> otsingu_nupp = draiver.find_element_by_name ("btnK")

Pärast soovitud sildi leidmist võime seejärel nupul klõpsata nuppu klõpsake meetod.

>>> otsingu_nupp.klõpsake ()

Olge siiski ettevaatlik, Google'i automaatsete soovituste tõttu võite otsida midagi muud.

Selle möödarääkimiseks peate klaviatuuri kohe vajutama sisestusklahvi. Võtmed jäävad selle artikli reguleerimisalast välja, kuid siin on kood ikkagi.

>>> seleenist.veebidraiver.tavaline.võtmed impordivad võtmeid
>>> search_box = draiver.find_element_by_id ("lst-ib")
>>> otsingu kast.send_keys ("Maa planeet")
>>> otsingu kast.send_keys (võtmed.TAGASI)

Ülaltoodud koodiga ei pea me klõpsama otsingunuppu. See töötab täpselt nagu siis, kui vajutame sisestusklahvi pärast otsinguväärtuste sisestamist.

See buttosni klõpsamise meetod ei tööta ainult nuppudega, see töötab ka linkidega.

Ekraanipiltide tegemine

Sa lugesid seda õigesti! Seleeni abil saate ekraanipilte teha ja see on sama lihtne kui eelmised jaotised.

Mida me teeme, on helistada save_screenshot juhiobjektil, sisestame siis pildi nime ja ekraanipilt tehakse.

>>> juht.save_screenshot ("Maa-planeet.png ")

Veenduge, et pildi nimel on a .png laiendus, muidu võite saada rikutud pildi.

Kui olete toimingud lõpetanud, saate brauseri sulgeda, käivitades järgmise koodi:

>>> juht.Sulge()

Järeldus

Seleen on tuntud kui väga võimas tööriist ja selle kasutamist peetakse automatiseerimistestijate jaoks ülioluliseks oskuseks. Seleen võib teha palju enamat, kui selles artiklis käsitletakse, klaviatuuri liigutusi saab tegelikult korrata, nagu näidatud Võtmed.TAGASI. Kui soovite seleeni kohta lisateavet, saate seda vaadata dokumentatsioon, see on üsna selge ja hõlpsasti kasutatav.

Parimad Linuxi mängupuldi kaardistamise rakendused
Kui teile meeldib mängida Linuxis mänge tavalise klaviatuuri ja hiire sisestussüsteemi asemel mängupuldiga, on teie jaoks mõned kasulikud rakendused. ...
Kasulikud tööriistad Linuxi mängijatele
Kui teile meeldib Linuxis mänge mängida, on tõenäoline, et olete mängukogemuse parandamiseks kasutanud selliseid rakendusi ja utiliite nagu Wine, Lutr...
HD Remastered Games Linuxile, millel pole kunagi varem Linuxi väljalaset olnud
Paljud mängude arendajad ja kirjastajad pakuvad frantsiisi eluea pikendamiseks välja vanade mängude HD-remasteri. Palun fännid, kes soovivad ühilduvus...