Selen

Zagon selena brez glave s Chromom

Zagon selena brez glave s Chromom
Če želite narediti spletno avtomatizacijo ali razrez spleta s spletnim brskalnikom Chrome, privzeto zažene grafično različico spletnega brskalnika Chrome. Ni težava, če skript Selenium zaženete iz grafičnega namiznega okolja Linux (tj.e., GNOME 3, KDE, XFCE4). Če pa želite skript Selenium zagnati v brezglavem okolju (tj.e., Ubuntu Server, CentOS / RHEL Server), kjer ni nameščeno nobeno grafično namizno okolje, potem to ne bo delovalo.

Na srečo lahko Selenium nastavite tako, da zažene spletni brskalnik Chrome v brezglavem načinu. V tem načinu bo spletni brskalnik Chrome deloval brez grafičnega uporabniškega vmesnika. Torej, Selenium lahko izvaja avtomatizacijo spletnih strani, razrez spletnih strani, teste brskalnikov itd. z uporabo spletnega brskalnika Chrome v strežnikih Linux, kjer ni nameščeno nobeno grafično namizno okolje.

V tem članku vam bom pokazal, kako zagnati Selenium s spletnim brskalnikom Chrome v brezglavem načinu. Uporabil bom knjižnico Selenium Python in pisal skripte Selenium s programskim jezikom Python 3. Torej, začnimo.

Pogoji:

Če želite preizkusiti ukaze in primere iz tega članka, jih morate imeti,

1) V računalniku nameščena distribucija Linuxa (po možnosti Ubuntu).
2) Python 3, nameščen v vašem računalniku.
3) PIP 3, nameščen v vašem računalniku.
4) Google Chrome, nameščen v vašem računalniku.

V LinuxHintu lahko najdete veliko člankov o teh temah.com. Ne pozabite jih preveriti, če potrebujete pomoč.

Priprava virtualnega okolja Python 3 za projekt:

Navidezno okolje Python se uporablja za ustvarjanje izoliranega direktorija Python projekta. Moduli Python, ki jih namestite s pomočjo PIP, bodo nameščeni samo v imeniku projekta, ne pa tudi globalno.

Python virtualenv modul se uporablja za upravljanje navideznih okolij Python.

Lahko namestite Python virtualenv modul globalno z uporabo PIP 3, kot sledi:

$ sudo pip3 namesti virtualenv

Python virtualenv namestiti.

Ustvarite imenik projekta krom-brezglava / v trenutnem delovnem imeniku, kot sledi:

$ mkdir -pv krom-brezglavi / gonilniki

Pomaknite se do novo ustvarjenega imenika projekta krom-brezglava / kot sledi:

$ cd krom brez glave /

Ustvarite navidezno okolje Python v imeniku projekta z naslednjim ukazom:

$ virtualenv .venv

Navidezno okolje Python je treba ustvariti v .venv / v imeniku vašega projekta.

Aktivirajte navidezno okolje Python v imeniku vašega projekta z naslednjim ukazom:

$ vir .venv / bin / aktiviraj

Namestitev knjižnice Selenium Python:

Knjižnica selena je na voljo v uradnem repozitoriju Python PyPI.

Knjižnico Selenium Python lahko namestite s pomočjo PIP 3, kot sledi:

$ pip3 namesti selen

Namestiti je treba knjižnico Selenium Python.

Namestitev spletnega gonilnika Chrome:

Spletni gonilnik Chrome vam omogoča nadzor ali avtomatizacijo spletnega brskalnika Google Chrome iz programa Selenium.

V tem razdelku vam bom pokazal, kako namestite spletni spletni gonilnik Chrome.

Najprej odprite Google Chrome in obiščite chrome: // settings / help.

Ko se stran naloži, poiščite številko različice Google Chrome v O Chromu odsek. Upoštevajte prva 3 odseka številke različice, kot je označeno na spodnjem posnetku zaslona.

Če želite prenesti spletni spletni gonilnik Chrome, obiščite uradno stran za prenos gonilnika Chrome.

V Trenutne izdaje v razdelku mora biti na voljo spletni gonilnik Chrome za najnovejše izdaje spletnega brskalnika Google Chrome, kot lahko vidite na spodnjem posnetku zaslona. Ena izmed trenutnih različic spletnega gonilnika Chrome mora imeti številko, ki se ujema z vašim spletnim brskalnikom Google Chrome. Prva 3 odseka številke različice spletnega gonilnika Chrome in spletnega brskalnika Google Chrome se morajo ujemati.

Če različica, ki jo iščete, ni v Trenutne izdaje v razdelku, se pomaknite malo navzdol in našli bi ga lahko.

Ko kliknete številko različice spletnega gonilnika Chrome, se bo odprla njegova stran za prenos. Kliknite na chromedriver_linux64.zadrgo datoteko od tukaj.

Prenesite arhiv spletnega gonilnika Chrome.

Preneseno chromedriver_linux64.zadrgo datoteka naj bo v vašem ~ / Prenosi imenik.

$ ls -lh ~ / Prenosi

Izvlecite chromedriver_linux64.zadrgo arhiv iz ~ / Prenosi v imenik vozniki / imenik vašega projekta, kot sledi:

$ unzip ~ / Downloads / chromedriver_linux64.zip -d gonilniki /

Nova datoteka kromedriver je treba ustvariti v vozniki / imenik vašega projekta, ko je arhiv spletnega gonilnika Chrome izvlečen, kot lahko vidite na spodnjem posnetku zaslona.

Testiranje spletnega gonilnika Chrome v načinu brez glave:

V tem razdelku vam bom pokazal, kako zagnati Selenium z gonilnikom Chrome v načinu brez glave.

Najprej ustvarite nov skript Python ex01.py v imenik projekta in vanj vnesite naslednje vrstice kod.

iz spletnega pogona za uvoz selena
iz selena.spletni pogon.običajni.tipke za uvoz ključev
iz selena.spletni pogon.krom.možnosti uvoza Možnosti
chromeOptions = Možnosti ()
chromeOptions.brezglava = Res
brskalnik = spletni voznik.Chrome (izvršljiva_pot = "./ drivers / chromedriver ", options = chromeOptions)
brskalnik.get ("http: // linuxhint.com ")
print ("Naslov:% s"% brskalnik.naslov)
brskalnik.prenehati()

Ko končate, shranite ex01.py Python skript.

Te vrstice uvozijo vse zahtevane stvari iz selen knjižnica.

Kot sem že omenil, gonilnik Chrome privzeto poskuša Google Chrome zagnati v grafičnem načinu. Če želimo Google Chrome zagnati v brezglavem načinu, moramo gonilniku za Chrome naročiti, naj posreduje nekaj dodatnih možnosti. Ta vrstica ustvari Opcije predmet, ki ga lahko kasneje posredujemo spletnemu gonilniku Chrome.

Google Chrome lahko zaženete v brezglavem načinu, tako da preprosto nastavite brezglave lastnina chromeOptions ugovarjati Prav.

Lahko pa uporabite add_argument () metoda chromeOptions predmet za dodajanje -brezglave argument ukazne vrstice za zagon Google Chroma v brezglavem načinu s spletnim gonilnikom Selenium Chrome.

Uporabite lahko spletni pogon.Chrome () metoda za inicializacijo / zagon spletnega brskalnika Google Chrome iz programa Selenium. The izvršljiva_pot Argument se uporablja, da Seleniju pove, naj uporabi kromedriver binarni iz vozniki / imenik projekta. The opcije argument sporoča Seleniju, naj uporabi naše možnosti po meri chromeOptions.

Ko Selenium zažene spletni brskalnik Google Chrome z uporabo spletnega gonilnika Selenium Chrome, vrne a brskalnik predmet. Kasneje ga lahko uporabimo za nadzor primerka Google Chrome.

The brskalnik.dobili () metoda naloži linuxhint.com spletno mesto v spletnem brskalniku Google Chrome v ozadju (v brezglavem načinu).

Ko se stran naloži, brskalnik.naslov nepremičnina bo imela naslov spletnega mesta. Python natisni () metoda natisne naslov spletnega mesta na konzoli.

Potem, brskalnik.prenehati() metoda zapre spletni brskalnik Google Chrome.

Če želite preizkusiti, ali Selenium lahko deluje v brezglavem načinu, zaženite skript Python ex01.py kot sledi:

$ python3 ex01.py

Na konzoli naj natisne naslov spletnega mesta, ne da bi v grafičnem načinu odpiral spletni brskalnik Google Chrome.

Da vam pokažem, da deluje iz strežnikov brez glave Linux (kjer ni nameščen noben grafični uporabniški vmesnik), sem zagnal skript Python ex01.py na strežniku Ubuntu 20.04 LTS. Kot lahko vidite, skript deluje povsem v redu.

Spletno strganje s selenom v brezglavem načinu s spletnim gonilnikom Chrome:

V tem razdelku vam bom predstavil primer spletnega razstavljanja v seleniju z uporabo spletnega gonilnika Chrome v brezglavem načinu.

Najprej obiščite generator naključnih imen.informacije iz brskalnika Google Chrome ali katerega koli drugega spletnega brskalnika. To spletno mesto bo ustvarilo 10 naključnih imen vsakič, ko znova naložite stran, kot lahko vidite na spodnjem posnetku zaslona. Naš cilj je pridobiti ta naključna imena s pomočjo selena v brezglavem načinu.

Če želite izvedeti strukturo HTML seznama, morate odpreti Orodje za razvijalce za Chrome. Za to pritisnite desni gumb miške (RMB) na strani in kliknite Preglejte ali pritisnite + + jaz.

Orodje za razvijalce za Chrome je treba odpreti. Kliknite na Ikona za pregled () kot je označeno na spodnjem posnetku zaslona.

Nato premaknite miškin kazalec na seznam Naključna imena. Seznam mora biti označen, kot je označeno na spodnjem posnetku zaslona. Nato pritisnite levi gumb miške (LMB), da izberete seznam.

Koda HTML seznama mora biti označena v Elementi zavihka Orodje za razvijalce za Chrome. Tu je seznam naključnih imen znotraj a div element. The div element ima razred ime rezultatov. V njej imamo ol element z razred ime nameList. Znotraj ol element, je vsako ime v a li element.

Iz tega lahko rečemo, da pridemo do li oznake, moramo slediti div.rezultati> ol.nameList> li

Torej, naš izbirnik CSS bo div.rezultati ol.seznam imen li (samo zamenjajte > znaki s presledkom)

Za pridobivanje teh naključnih imen ustvarite nov skript Python ex02.py in vanj vnesite naslednje vrstice kod.

iz spletnega pogona za uvoz selena
iz selena.spletni pogon.običajni.tipke za uvoz ključev
iz selena.spletni pogon.krom.možnosti uvoza Možnosti
chromeOptions = Možnosti ()
chromeOptions.brezglava = Res
brskalnik = spletni voznik.Chrome (izvršljiva_pot = "./ drivers / chromedriver ", options = chromeOptions)
brskalnik.get ("http: // generator naključnih imen.info / ")
nameList = brskalnik.find_elements_by_css_selector ('div.rezultati ol.nameList li ')
za ime v imeList:
natisni (ime.besedilo)
brskalnik.prenehati()

Ko končate, shranite ex02.py Python skript.

V prejšnjem oddelku tega članka sem razložil vrstice 1-8. Ti so enaki kot v ex01.py.

Vrstica 10 naloži spletno mesto generatorja naključnih imen z uporabo brskalnik.dobili () metoda.

Vrstica 11 izbere seznam imen s pomočjo brskalnik.find_elements_by_css_selector () metoda. Ta metoda uporablja izbirnik CSS div.rezultati ol.seznam imen li da poiščete seznam imen. Nato je seznam imen shranjen v nameList spremenljivka.

V vrsticah 13 in 14 je a za zanka se uporablja za iteracijo skozi nameList seznam li elementi. V vsaki ponovitvi je vsebina datoteke li element je natisnjen na konzoli.

Zdaj zaženite skript Python ex02.py kot sledi:

$ python3 ex02.py

Kot lahko vidite, skript Python ex02.py naložila vsa naključna imena s spletne strani.

Če skript zaženete drugič, bi moral vrniti nov seznam naključnih imen, kot lahko vidite na spodnjem posnetku zaslona.

Težave, s katerimi se lahko soočite s tekom selena v brezglavem načinu:

Prej ste že videli, da je zagon selena v brezglavem načinu z gonilnikom Chrome tako enostaven kot nastavitev chromeOptions.brezglave zastava do Prav.

Ta rešitev v nekaterih distribucijah Linuxa morda ne bo delovala za vas. V tem poglavju bom govoril o nekaterih težavah, s katerimi se lahko srečate med zagonom selena v brezglavem načinu s spletnim gonilnikom Chrome.

Spletni brskalnik Google Chrome privzeto veliko izvaja peskovnike (veliko stvari izvaja v izoliranem okolju). To lahko povzroči težave pri zagonu selena v brezglavem načinu s spletnim gonilnikom Chrome. Peskovnika za Google Chrome lahko onemogočite z uporabo -brez peskovnika zastavo.

Če želite dodati -brez peskovnika zastavo, dodajte naslednjo vrstico, preden s programom inicializirate gonilnik Selenium Chrome spletni pogon.Chrome () metoda (vrstica 8 v ex01.py Skript Python).

chromeOptions.add_argument ("- brez peskovnika")

Morda boste imeli težave pri izvajanju nekaterih stvari v spletnem brskalniku Google Chrome iz podjetja Selenium, na primer pri posnetkih zaslona spletnega mesta itd. To se lahko zgodi, ker lahko Google Chrome v brezglavem načinu nastavi napačno ločljivost navideznega zaslona. Torej vaše spletno mesto morda ne bo videti pravilno. Z brskalnikom Google Chrome lahko v brezglavem načinu nastavite želeno ločljivost navideznega zaslona za spletni brskalnik Google Chrome -velikost okna možnost ukazne vrstice.

Na primer, če želite navidezno širino zaslona nastaviti na 1280 px in višina do 720 px, dodajte -velikost okna možnost ukazne vrstice pred inicializacijo gonilnika Selenium Chrome z uporabo spletni pogon.Chrome () metoda (vrstica 8 v ex01.py Python script), kot sledi:

chromeOptions.add_argument ("- velikost okna = 1280.720")

Na vašem strežniku morda ni nameščen GPU ali pa ima GPU, ki ga spletni brskalnik Google Chrome ne bo vedel uporabljati. Privzeto bi moral Google Chrome samodejno onemogočiti pospeševanje GPU, če GPU ni na voljo ali če je na voljo nepodprt GPU. V nekaterih primerih to morda ne bo storilo. V tem primeru Selenium morda ne bo mogel zagnati spletnega brskalnika Google Chrome v brezglavem načinu. Da bi rešili to težavo, morate s pomočjo -onemogoči-gpu zastavo.

Če želite dodati -onemogoči-gpu zastavo, dodajte naslednjo vrstico, preden s programom inicializirate gonilnik Selenium Chrome spletni pogon.Chrome () metoda (vrstica 8 v ex01.py Skript Python).

chromeOptions.add_argument (“- disable-gpu”)

Zaključek:

V tem članku sem vam pokazal, kako s pomočjo spletnega gonilnika Chrome nastavite Selen v brezglavem načinu. Obdelal sem osnove, ki vam bodo pomagale začeti z brezglavo avtomatizacijo brskalnika Selenium, spletnim testiranjem in strganjem spletnih strani.

Obdelal sem tudi nekatere argumente / zastavice ukazne vrstice Google Chrome, s katerimi lahko rešite nekatere težave, ki jih imate med izvajanjem programa Selenium v ​​brezglavem načinu s spletnim gonilnikom Chrome.

Na voljo je veliko več možnosti ukazne vrstice Google Chrome, ki jih v tem članku nisem obravnaval. Te možnosti ukazne vrstice so lahko koristne za vaš projekt. Vse podprte možnosti ukazne vrstice Google Chrome najdete na strani Seznam stikal ukazne vrstice Chromium avtorja Peter Beverloo.

Najboljše igre z ročnim sledenjem
Oculus Quest je pred kratkim predstavil odlično idejo ročnega sledenja brez krmilnikov. Z vedno večjim številom iger in dejavnosti, ki izvajajo podpor...
Kako prikazati prekrivanje zaslonskega menija v celozaslonskih aplikacijah in igrah za Linux
Igranje celozaslonskih iger ali uporaba aplikacij v celozaslonskem načinu brez motenj vam lahko odreže ustrezne sistemske informacije, ki so vidne na ...
Top 5 kartic za zajemanje iger
Vsi smo v YouTubu videli in oboževali pretakanje iger. PewDiePie, Jakesepticye in Markiplier so le nekateri izmed najboljših igralcev, ki so zaslužili...