Selenium

„Selenium“ veikia be galvos su „Chrome“

„Selenium“ veikia be galvos su „Chrome“
Jei norite atlikti „Selenium“ žiniatinklio automatizavimą ar žiniatinklio perkėlimą naudodami „Chrome“ žiniatinklio naršyklę, pagal numatytuosius nustatymus ji veikia „Chrome“ žiniatinklio naršyklės grafine versija. Tai nėra problema, kai „Selenium“ scenarijų naudojate iš „Linux“ grafinės darbalaukio aplinkos (t. Y.e., GNOME 3, KDE, XFCE4). Bet jei norite paleisti savo „Selenium“ scenarijų be galvos aplinkoje (t.e., „Ubuntu Server“, „CentOS / RHEL Server“), kur nėra įdiegta grafinė darbalaukio aplinka, tai neveiks.

Laimei, galite sukonfigūruoti „Selenium“ paleisti „Chrome“ žiniatinklio naršyklę režimu be galvos. Šiuo režimu „Chrome“ žiniatinklio naršyklė veiks be jokios grafinės vartotojo sąsajos. Taigi, „Selenium“ gali atlikti interneto automatizavimą, žiniatinklio atsisakymą, naršyklės testus ir kt. „Chrome“ žiniatinklio naršyklės naudojimas „Linux“ serveriuose, kur nėra įdiegta grafinė darbalaukio aplinka.

Šiame straipsnyje aš jums parodysiu, kaip „Selenium“ paleisti naudojant „Chrome“ žiniatinklio naršyklę be galvos režimu. Aš naudosiu „Selenium Python“ biblioteką ir rašysiu „Selenium“ scenarijus naudodamasis „Python 3“ programavimo kalba. Taigi, pradėkime.

Būtinos sąlygos:

Norėdami išbandyti šio straipsnio komandas ir pavyzdžius, turite,

1) „Linux“ paskirstymas (pageidautina „Ubuntu“), įdiegtas jūsų kompiuteryje.
2) „Python 3“ įdiegtas jūsų kompiuteryje.
3) PIP 3 įdiegtas jūsų kompiuteryje.
4) „Google Chrome“ įdiegta jūsų kompiuteryje.

„LinuxHint“ galite rasti daug straipsnių šiomis temomis.com. Jei jums reikia pagalbos, būtinai patikrinkite juos.

„Python 3“ virtualios aplinkos paruošimas projektui:

„Python“ virtuali aplinka naudojama kuriant izoliuotą „Python“ projekto katalogą. „Python“ moduliai, kuriuos įdiegsite naudodami PIP, bus įdiegti tik projekto kataloge, o ne visame pasaulyje.

„Python“ virtualenv modulis naudojamas valdyti „Python“ virtualioms aplinkoms.

Galite įdiegti „Python“ virtualenv modulis visame pasaulyje naudojant PIP 3 taip:

$ sudo pip3 įdiekite virtualenv

„Python“ virtualenv turėtų būti įdiegta.

Sukurkite projekto katalogą chromas be galvos / dabartiniame darbo kataloge taip:

$ mkdir -pv chrome-headless / tvarkyklės

Eikite į naujai sukurtą projekto katalogą chromas be galvos / taip:

$ cd chromas be galvos /

Sukurkite „Python“ virtualią aplinką savo projekto kataloge naudodami šią komandą:

$ virtualenv .venv

Virtuali Python aplinka turėtų būti sukurta .venv / katalogą savo projekto kataloge.

Suaktyvinkite virtualią Python aplinką savo projekto kataloge naudodami šią komandą:

$ šaltinis .venv / bin / aktyvuoti

„Selenium Python“ bibliotekos diegimas:

Seleno biblioteka yra oficialioje „Python PyPI“ saugykloje.

„Selenium Python“ biblioteką galite įdiegti naudodami PIP 3 taip:

$ pip3 įdiekite seleną

Reikėtų įdiegti „Selenium Python“ biblioteką.

„Chrome“ žiniatinklio tvarkyklės diegimas:

„Chrome“ žiniatinklio tvarkyklė leis jums valdyti ar automatizuoti „Google Chrome“ žiniatinklio naršyklę iš „Selenium“.

Šiame skyriuje aš jums parodysiu, kaip įdiegti „Chrome“ žiniatinklio tvarkyklę.

Pirmiausia atidarykite „Google Chrome“ ir apsilankykite chrome: // settings / help.

Kai puslapis bus įkeltas, turėtumėte rasti „Google Chrome“ versijos numerį Apie „Chrome“ skyrius. Atkreipkite dėmesį į pirmuosius 3 versijos numerio skyrius, pažymėtus žemiau esančiame ekrano kopijoje.

Norėdami atsisiųsti „Chrome“ žiniatinklio tvarkyklę, apsilankykite oficialiame „Chrome“ tvarkyklės atsisiuntimo puslapyje.

Viduje konors Dabartiniai leidiniai skyriuje „Chrome“ žiniatinklio tvarkyklė, skirta naujausiems „Google Chrome“ žiniatinklio naršyklės leidimams, turėtų būti prieinama, kaip matote toliau pateiktoje ekrano kopijoje. Vieno iš dabartinių „Chrome“ žiniatinklio tvarkyklių versijų versijos numeris turėtų atitikti „Google Chrome“ žiniatinklio naršyklę. Pirmosios 3 „Chrome“ žiniatinklio tvarkyklės ir „Google Chrome“ žiniatinklio naršyklės versijos numerio skiltys turi sutapti.

Jei ieškomos versijos nėra Dabartiniai leidimai skyriuje, šiek tiek slinkite žemyn ir turėtumėte jį rasti.

Kai spustelėsite „Chrome“ žiniatinklio tvarkyklės versijos numerį, ji turėtų patekti į jos atsisiuntimo puslapį. Spustelėkite chromedriver_linux64.užtrauktukas failą iš čia.

Reikėtų atsisiųsti „Chrome“ žiniatinklio tvarkyklės archyvą.

Atsisiųsta chromedriver_linux64.užtrauktukas failas turėtų būti jūsų ~ / Atsisiuntimai kataloge.

$ ls -lh ~ / Atsisiuntimai

Ištraukite chromedriver_linux64.užtrauktukas archyvas iš ~ / Atsisiuntimai katalogą į vairuotojai / savo projekto katalogą taip:

$ unzip ~ / Downloads / chromedriver_linux64.zd -d tvarkyklės /

Naujas failas chromedriver turėtų būti sukurtas vairuotojai / išgausite „Chrome“ žiniatinklio tvarkyklės archyvą, kaip matote toliau pateiktoje ekrano kopijoje.

„Chrome“ žiniatinklio tvarkyklės testavimas bevieliu režimu:

Šiame skyriuje aš jums parodysiu, kaip paleisti „Selenium“ naudojant „Chrome“ tvarkyklę be galvos režimu.

Pirmiausia sukurkite naują „Python“ scenarijų ex01.py savo projekto kataloge ir įveskite toliau nurodytas kodų eilutes.

iš seleno importo žiniatinklio tvarkyklės
iš seleno.žiniatinklio tvarkyklė.paplitęs.raktai importuoja raktus
iš seleno.žiniatinklio tvarkyklė.chromuotas.importuoti Parinktys
chromeOptions = Parinktys ()
„Chrome“ parinktys.be galvos = Tiesa
naršyklė = žiniatinklio tvarkyklė.„Chrome“ (vykdomojo_ kelias = "./ drivers / chromedriver ", options = chromeOptions)
naršyklė.gauti ("http: // linuxhint.com ")
spausdinti („Pavadinimas:% s“% naršyklė.pavadinimas)
naršyklė.mesti ()

Kai baigsite, išsaugokite ex01.py „Python“ scenarijus.

Šios eilutės importuoja visą reikiamą medžiagą iš selenas biblioteka.

Kaip jau sakiau anksčiau, pagal numatytuosius nustatymus „Chrome“ tvarkyklė bando paleisti „Google Chrome“ grafiniu režimu. Norėdami paleisti „Google Chrome“ be galvos režimu, turime nurodyti „Chrome“ tvarkyklei perduoti keletą papildomų parinkčių. Ši eilutė sukuria Galimybės objektą, kurį vėliau galime perduoti „Chrome“ žiniatinklio tvarkyklei.

Galite paleisti „Google Chrome“ be galvos režimu, tiesiog nustatydami be galvos nuosavybė „Chrome“ parinktys prieštarauti Tiesa.

Arba galite naudoti add_argument () metodas „Chrome“ parinktys objektas pridėti -be galvos komandinės eilutės argumentas paleisti „Google Chrome“ be galvos režimu naudojant „Selenium Chrome“ žiniatinklio tvarkyklę.

Galite naudoti a žiniatinklio tvarkyklė.„Chrome“ () būdas inicijuoti / paleisti „Google Chrome“ žiniatinklio naršyklę iš „Selenium“. The vykdomas_ kelias argumentas naudojamas liepti Selenium naudoti chromedriver dvejetainis iš vairuotojai / projekto katalogas. The galimybės argumentas liepia Selenui naudoti mūsų pasirinktines parinktis „Chrome“ parinktys.

Kai „Selenium“ paleidžia „Google Chrome“ žiniatinklio naršyklę naudodama „Selenium Chrome“ žiniatinklio tvarkyklę, ji pateikia a naršyklė objektas. Vėliau galime jį naudoti „Google Chrome“ egzemplioriui valdyti.

The naršyklė.gauti () metodas įkelia linuxhint.com svetainė „Google Chrome“ žiniatinklio naršyklėje fone (režimu be galvos).

Kai puslapis bus įkeltas, naršyklė.pavadinimas nuosavybė turės svetainės pavadinimą. „Python“ spausdinti () metodas spausdina svetainės pavadinimą konsolėje.

Tada naršyklė.mesti () metodas uždaro „Google Chrome“ žiniatinklio naršyklę.

Norėdami išbandyti, ar „Selenium“ gali veikti be galvos režimu, paleiskite „Python“ scenarijų ex01.py taip:

$ python3 ex01.py

Jis turėtų atspausdinti svetainės pavadinimą konsolėje, neatidarant „Google Chrome“ žiniatinklio naršyklės grafiniu režimu.

Norėdamas parodyti, kad jis veikia iš „Linux“ serverių be galvos (kur nėra įdiegta grafinė vartotojo sąsaja), paleidžiau „Python“ scenarijų ex01.py „Ubuntu Server 20“.04 LTS. Kaip matote, scenarijus veikia puikiai.

Žiniatinklio nuskaitymas naudojant seleną be galvos režimu naudojant „Chrome“ žiniatinklio tvarkyklę:

Šiame skyriuje aš jums parodysiu žiniatinklio atsisakymo „Selenium“ pavyzdį naudojant „Chrome“ žiniatinklio tvarkyklę bevieliu režimu.

Pirmiausia apsilankykite atsitiktinių pavadinimų generatoriuje.informacija iš „Google Chrome“ ar bet kurios kitos žiniatinklio naršyklės. Ši svetainė sugeneruos 10 atsitiktinių pavadinimų kiekvieną kartą, kai įkelsite puslapį, kaip matote toliau pateiktoje ekrano kopijoje. Mūsų tikslas yra išgauti šiuos atsitiktinius pavadinimus naudojant Selenium režimą be galvos.

Norėdami sužinoti sąrašo HTML struktūrą, turite atidaryti „Chrome“ kūrėjo įrankis. Norėdami tai padaryti, paspauskite dešinį pelės mygtuką (RMB) puslapyje ir spustelėkite Apžiūrėkite arba paspauskite + + .

„Chrome“ kūrėjo įrankis turėtų būti atidaryta. Spustelėkite Tikrinti piktogramą () kaip pažymėta toliau pateiktoje ekrano kopijoje.

Tada užveskite pelės žymeklį virš Atsitiktiniai vardai. Sąrašas turėtų būti paryškintas, kaip pažymėta toliau pateiktoje ekrano kopijoje. Tada paspauskite kairįjį pelės mygtuką (LMB), kad pasirinktumėte sąrašą.

Sąrašo HTML kodas turėtų būti paryškintas Elementai skirtukas „Chrome“ kūrėjo įrankis. Čia atsitiktinių vardų sąrašas yra a div elementas. The div elementas turi klasė vardas rezultatus. Jo viduje mes turime ol elementas su klasė vardas vardų sarašas. Viduje ol elementas, kiekvienas iš pavadinimų yra a li elementas.

Iš to galime pasakyti, kad patektume į li žymes, mes turime laikytis div.rezultatai> ol.nameList> li

Taigi, mūsų CSS selektorius bus div.rezultatai ol.nameList li (tiesiog pakeiskite > ženklai su tarpais)

Norėdami išgauti šiuos atsitiktinius pavadinimus, sukurkite naują „Python“ scenarijų ex02.py ir įveskite joje šias kodų eilutes.

iš seleno importo žiniatinklio tvarkyklės
iš seleno.žiniatinklio tvarkyklė.paplitęs.raktai importuoja raktus
iš seleno.žiniatinklio tvarkyklė.chromuotas.importuoti Parinktys
chromeOptions = Parinktys ()
„Chrome“ parinktys.be galvos = Tiesa
naršyklė = žiniatinklio tvarkyklė.„Chrome“ (vykdomojo_ kelias = "./ drivers / chromedriver ", options = chromeOptions)
naršyklė.get ("http: // atsitiktinio pavadinimo generatorius.informacija / ")
nameList = naršyklė.find_elements_by_css_selector ('div.rezultatai ol.nameList li ')
vardui vardo sąraše:
spausdinti (pavadinimas.tekstas)
naršyklė.mesti ()

Kai baigsite, išsaugokite ex02.py „Python“ scenarijus.

Aš paaiškinau 1-8 eilutes ankstesniame šio straipsnio skyriuje. Tai yra tas pats kaip ex01.py.

10 eilutė įkelia atsitiktinių pavadinimų generatoriaus svetainę naudodama naršyklė.gauti () metodas.

11 eilutėje vardų sąrašas parenkamas naudojant naršyklė.find_elements_by_css_selector () metodas. Šis metodas naudojamas CSS parinkikliu div.rezultatai ol.nameList li norėdami rasti vardų sąrašą. Tada vardų sąrašas saugomas vardų sarašas kintamasis.

13 ir 14 eilutėse a dėl kilpa naudojama kartoti per vardų sarašas sąrašas li elementai. Kiekvienoje iteracijoje turinys li elementas atspausdintas ant konsolės.

Dabar paleiskite „Python“ scenarijų ex02.py taip:

$ python3 ex02.py

Kaip matote, „Python“ scenarijus ex02.py parsinešė visus atsitiktinius pavadinimus iš tinklalapio.

Jei paleisite scenarijų antrą kartą, jis turėtų grąžinti naują atsitiktinių pavadinimų sąrašą, kaip matote toliau pateiktoje ekrano kopijoje.

Problemos, su kuriomis galite susidurti vykdydami seleną be galvos režimu:

Anksčiau matėte, kad „Selenium“ paleisti be galvos režimu naudojant „Chrome“ tvarkyklę yra taip pat lengva, kaip nustatyti „Chrome“ parinktys.be galvos vėliava į Tiesa.

Šis sprendimas gali netikti kai kuriuose „Linux“ paskirstymuose. Šiame skyriuje kalbėsiu apie kai kurias problemas, su kuriomis galite susidurti paleisdami „Selenium“ režimu be galvos naudodamiesi „Chrome“ žiniatinklio tvarkykle.

Pagal numatytuosius nustatymus „Google Chrome“ žiniatinklio naršyklė daug naudoja „sandbox“ (veikia daug dalykų izoliuotoje aplinkoje). Tai gali sukelti problemų, kai „Selenium“ veikia belaidžiu režimu naudojant „Chrome“ žiniatinklio tvarkyklę. Galite išjungti „Google Chrome“ smėlio dėžės naudojimą naudodami -be smėlio dėžės vėliava.

Norėdami pridėti -be smėlio dėžės vėliava, pridėkite šią eilutę prieš inicializuodami „Selenium Chrome“ tvarkyklę naudodami žiniatinklio tvarkyklė.„Chrome“ () metodas (8 eilutė į ex01.py „Python“ scenarijus).

„Chrome“ parinktys.add_argument ("- be smėlio dėžės")

Jums gali kilti problemų atliekant tam tikrus dalykus „Google Chrome“ žiniatinklio naršyklėje iš „Selenium“, pvz., Darant svetainės ekrano kopijas ir pan. Taip gali atsitikti, nes režimu be galvos „Google Chrome“ gali nustatyti neteisingą virtualaus ekrano skiriamąją gebą. Taigi, jūsų svetainė gali atrodyti netinkama. Galite nustatyti norimą „Google Chrome“ interneto naršyklės virtualaus ekrano skiriamąją gebą bevieliu režimu naudodami -lango dydžio komandinės eilutės parinktis.

Pavyzdžiui, norėdami nustatyti virtualaus ekrano plotį į 1280 piks ir aukštis iki 720 pikselių, pridėti -lango dydžio Komandinės eilutės parinktis prieš inicijuojant „Selenium Chrome“ tvarkyklę naudojant žiniatinklio tvarkyklė.„Chrome“ () metodas (8 eilutė į ex01.py „Python“ scenarijus) taip:

„Chrome“ parinktys.add_argument ("- lango dydis = 1280 720")

Jūsų serveryje gali būti neįdiegtas GPU arba GPU, kurio „Google Chrome“ žiniatinklio naršyklė nežinos, kaip naudoti. Pagal numatytuosius nustatymus „Google Chrome“ turėtų automatiškai išjungti GPU spartinimą, jei GPU nėra arba yra nepalaikomo GPU. Kai kuriais atvejais tai gali nepavykti. Tokiu atveju „Selenium“ gali nepavykti paleisti „Google Chrome“ žiniatinklio naršyklės be galvos režimu. Norėdami išspręsti šią problemą, turite išjungti GPU spartinimą naudodami -išjungti-gpu vėliava.

Norėdami pridėti -išjungti-gpu vėliava, pridėkite šią eilutę prieš inicializuodami „Selenium Chrome“ tvarkyklę naudodami žiniatinklio tvarkyklė.„Chrome“ () metodas (8 eilutė į ex01.py „Python“ scenarijus).

„Chrome“ parinktys.add_argument („- išjungti-gpu“)

Išvada:

Šiame straipsnyje aš jums parodžiau, kaip nustatyti „Selenium“ bevielio režimo režimu naudojant „Chrome“ žiniatinklio tvarkyklę. Išnagrinėjau pagrindus, kurie padės jums pradėti nuo „Selenium“ naršyklės automatikos automatizavimo, žiniatinklio testavimo ir žiniatinklio grandymo.

Taip pat apžvelgiau kai kuriuos „Google Chrome“ komandinės eilutės argumentus / žymes, kurias galite naudoti, kad išspręstumėte kai kurias problemas, kurios gali kilti paleidus „Selenium“ be galvos režimu naudojant „Chrome“ žiniatinklio tvarkyklę.

Yra daug daugiau „Google Chrome“ komandinės eilutės parinkčių, kurių nepateikiau šiame straipsnyje. Šios komandinės eilutės parinktys gali būti naudingos jūsų projektui. Visas palaikomas „Google Chrome“ komandinės eilutės parinktis rasite Peterio Beverloo „Chromium“ komandų eilutės jungiklių sąraše.

5 geriausi „Arcade“ žaidimai, skirti „Linux“
Šiais laikais kompiuteriai yra rimta mašina, naudojama žaidimams. Jei negalėsite gauti naujo aukšto rezultato, žinosite, ką noriu pasakyti. Šiame įraš...
Mūšis už Wesnothą 1.13.6 Išleista plėtra
Mūšis už Wesnothą 1.13.6 išleistas praėjusį mėnesį, yra šeštasis 1 versijos kūrimo leidimas.13.„x“ serija ir ji teikia daug patobulinimų, ypač vartoto...
Kaip įdiegti „League of Legends“ „Ubuntu 14“.04
Jei esate „League of Legends“ gerbėjas, tai jums yra galimybė išbandyti „League of Legends“. Atminkite, kad LOL palaikoma „PlayOnLinux“, jei esate „Li...