Selenium

Pokretanje selena bez glave s Chromeom

Pokretanje selena bez glave s Chromeom
Ako želite izvršiti automatsku automatizaciju ili uklanjanje web stranica Selenium s web preglednikom Chrome, on prema zadanim postavkama pokreće grafičku verziju web preglednika Chrome. Nije problem kada skriptu Selenium izvodite iz Linux grafičkog okruženja radne površine (tj.e., GNOME 3, KDE, XFCE4). Ali ako želite pokrenuti svoju skriptu Selenium u bezglavom okruženju (tj.e., Ubuntu Server, CentOS / RHEL Server) gdje nemate instalirano grafičko okruženje radne površine, ovo neće raditi.

Srećom, možete konfigurirati Selenium za pokretanje web preglednika Chrome u načinu bez glave. U ovom načinu rada web preglednik Chrome pokrenut će se bez ikakvog grafičkog korisničkog sučelja. Dakle, Selenium može raditi automatizaciju weba, uklanjanje weba, testove preglednika, itd. pomoću web preglednika Chrome na Linux poslužiteljima gdje nemate instalirano grafičko okruženje radne površine.

U ovom članku pokazat ću vam kako pokrenuti Selenium s web preglednikom Chrome u načinu bez glave. Koristit ću biblioteku Selenium Python i pisati selenium skripte koristeći programski jezik Python 3. Pa, krenimo.

Preduvjeti:

Da biste isprobali naredbe i primjere iz ovog članka, morate ih imati,

1) Linux distribucija (po mogućnosti Ubuntu) instalirana na vašem računalu.
2) Python 3 instaliran na vašem računalu.
3) PIP 3 instaliran na vašem računalu.
4) Google Chrome instaliran na vašem računalu.

Mnogo članaka o tim temama možete pronaći na LinuxHintu.com. Svakako ih pregledajte ako trebate pomoć.

Priprema virtualnog okruženja Python 3 za projekt:

Virtualno okruženje Python koristi se za stvaranje izoliranog direktorija projekta Python. Python moduli koje instalirate pomoću PIP-a bit će instalirani samo u direktorij projekta, a ne globalno.

Piton virtualenv modul koristi se za upravljanje Python virtualnim okruženjima.

Možete instalirati Python virtualenv modul globalno koristeći PIP 3 kako slijedi:

$ sudo pip3 instaliraj virtualenv

Piton virtualenv treba instalirati.

Stvorite direktorij projekta krom-bez glave / u vašem trenutnom radnom direktoriju na sljedeći način:

$ mkdir -pv krom-bez glave / upravljački programi

Idite do vašeg novostvorenog direktorija projekta krom-bez glave / kako slijedi:

$ cd krom bez glave /

Stvorite Python virtualno okruženje u direktoriju svog projekta sljedećom naredbom:

$ virtualenv .venv

Python virtualno okruženje treba stvoriti u .venv / direktorij u direktoriju vašeg projekta.

Aktivirajte Python virtualno okruženje direktorija vašeg projekta sljedećom naredbom:

$ izvor .venv / bin / aktivirati

Instaliranje biblioteke Selenium Python:

Biblioteka selena dostupna je u službenom spremištu Python PyPI.

Biblioteku Selenium Python možete instalirati pomoću PIP 3 na sljedeći način:

$ pip3 instaliraj selen

Treba instalirati biblioteku Selenium Python.

Instaliranje Chrome web upravljačkog programa:

Chrome web upravljački program omogućit će vam kontrolu ili automatizaciju web preglednika Google Chrome iz tvrtke Selenium.

U ovom odjeljku pokazat ću vam kako instalirati Chrome web upravljački program.

Prvo otvorite Google Chrome i posjetite chrome: // settings / help.

Nakon što se stranica učita, trebali biste pronaći broj verzije Google Chromea u O Chromeu odjeljak. Zabilježite prva 3 odjeljka broja verzije kako je označeno na snimci zaslona u nastavku.

Da biste preuzeli Chrome web upravljački program, posjetite službenu stranicu za preuzimanje Chrome upravljačkog programa.

U Trenutna izdanja odjeljak, Chrome Web Driver za najnovija izdanja web preglednika Google Chrome trebao bi biti dostupan, kao što možete vidjeti na snimci zaslona u nastavku. Jedno od trenutačnih izdanja Chrome web-upravljača trebalo bi imati odgovarajući broj verzije vašeg web-preglednika Google Chrome. Prva 3 odjeljka broja verzije Chrome web-upravljačkog programa i web-preglednika Google Chrome moraju se podudarati.

Ako verzija koju tražite nije u Trenutna izdanja pomaknite se malo prema dolje i trebali biste ga moći pronaći.

Kada kliknete na broj verzije Chrome web-upravljačkog programa, trebao bi se otvoriti njegova stranica za preuzimanje. Klikni na chromedriver_linux64.zip datoteka odavde.

Treba preuzeti arhivu Chrome web-upravljača.

Preuzeto chromedriver_linux64.zip datoteka bi trebala biti u vašem ~ / Preuzimanja imenik.

$ ls -lh ~ / Preuzimanja

Izvadite chromedriver_linux64.zip arhiva iz ~ / Preuzimanja direktorij u vozači / direktorij vašeg projekta kako slijedi:

$ unzip ~ / Preuzimanja / chromedriver_linux64.zip -d upravljački programi /

Nova datoteka kromedriver treba stvoriti u vozači / direktorij vašeg projekta nakon izdvajanja arhive Chrome web-upravljača, kao što možete vidjeti na donjoj snimci zaslona.

Testiranje Chrome web-upravljačkog programa u načinu bez glave:

U ovom odjeljku pokazat ću vam kako pokrenuti Selenium koristeći Chrome Driver u načinu bez glave.

Prvo stvorite novu Python skriptu ex01.py u direktorij vašeg projekta i u njega unesite sljedeće retke kodova.

s selena za uvoz webdrivera
od selena.mrežni pogonitelj.uobičajen.tipke uvoz ključeva
od selena.mrežni pogonitelj.krom.mogućnosti uvoza Opcije
chromeOptions = Opcije ()
chromeOptions.bez glave = Istina
preglednik = webdriver.Chrome (izvršna_puta = "./ drivers / chromedriver ", options = chromeOptions)
preglednik.get ("http: // linuxhint.com ")
ispis ("Naslov:% s"% preglednik.titula)
preglednik.prestati()

Kad završite, spremite ex01.py Python skripta.

Ovi redovi uvoze sve potrebne stvari iz selen knjižnica.

Kao što sam već rekao, prema zadanim postavkama upravljački program Chrome pokušava pokretati Google Chrome u grafičkom načinu. Da bismo Google Chrome pokrenuli u načinu bez glave, moramo reći upravljačkom programu Chrome da proslijedi neke dodatne mogućnosti. Ova linija stvara Opcije objekt koji kasnije možemo proslijediti Chrome upravljačkom programu.

Google Chrome možete pokretati u načinu bez glave jednostavno postavljanjem bezglav vlasništvo chromeOptions prigovoriti Pravi.

Ili možete koristiti dodaj_argument () metoda chromeOptions objekt za dodavanje -bezglav argument naredbenog retka za pokretanje Google Chromea u načinu bez glave pomoću web-upravljačkog programa Selenium Chrome.

Možete koristiti mrežni pogonitelj.Krom() metoda za inicijalizaciju / pokretanje web preglednika Google Chrome iz selena. The izvršna_puta Argument se koristi da kaže Seleniju da koristi kromedriver binarni iz vozači / direktorij projekta. The mogućnosti argument govori Seleniju da koristi naše prilagođene opcije chromeOptions.

Jednom kada Selenium pokrene web preglednik Google Chrome pomoću Selenium Chrome web upravljačkog programa, vraća datoteku preglednik objekt. Pomoću njega možemo kasnije kontrolirati instancu Google Chrome.

The preglednik.dobiti() metoda učitava linuxhint.com web stranica u web pregledniku Google Chrome u pozadini (u načinu bez glave).

Jednom kada se stranica učita, preglednik.titula nekretnina će imati naslov web stranice. Python ispis () metoda ispisuje naslov web stranice na konzoli.

Onda preglednik.prestati() metoda zatvara web preglednik Google Chrome.

Da biste testirali može li Selenium raditi u načinu bez glave, pokrenite Python skriptu ex01.py kako slijedi:

$ python3 ex01.py

Trebao bi ispisati naslov web stranice na konzoli bez otvaranja web preglednika Google Chrome u grafičkom načinu.

Samo da bih vam pokazao da radi s Linux bezglavih poslužitelja (gdje nije instalirano grafičko korisničko sučelje), pokrenuo sam Python skriptu ex01.py na Ubuntu poslužitelju 20.04 LTS. Kao što vidite, skripta radi sasvim dobro.

Struganje weba selenom u načinu bez glave pomoću Chrome web-upravljačkog programa:

U ovom odjeljku pokazat ću vam primjer uklanjanja weba u Seleniju pomoću Chrome upravljačkog programa u načinu bez glave.

Prvo posjetite generator slučajnih imena.informacije iz Google Chromea ili bilo kojeg drugog web preglednika. Ova će web stranica generirati 10 nasumičnih imena svaki put kada ponovo učitate stranicu, kao što možete vidjeti na snimci zaslona u nastavku. Cilj nam je izdvojiti ta slučajna imena pomoću selena u načinu bez glave.

Da biste saznali HTML strukturu popisa, morate otvoriti Alat za razvojne programere Chrome. Da biste to učinili, pritisnite desnu tipku miša (RMB) na stranici i kliknite na Pregledati ili pritisnite + + Ja.

Alat za razvojne programere Chrome treba otvoriti. Klikni na Ikona pregleda () kako je označeno na snimci zaslona u nastavku.

Zatim zadržite pokazivač iznad popisa Nasumična imena. Popis treba istaknuti kako je označeno na donjoj snimci zaslona. Zatim pritisnite lijevu tipku miša (LMB) za odabir popisa.

HTML kôd popisa trebao bi biti istaknut u Elementi na kartici Alat za razvojne programere Chrome. Ovdje je popis nasumičnih imena unutar a div element. The div element ima razred Ime rezultatima. Unutar nje imamo ol element s razred Ime lista imena. Unutar ol element, svako ime je u a li element.

Iz ovoga možemo reći da se dolazi do li oznake, moramo slijediti div.rezultati> ol.nameList> li

Dakle, naš će CSS selektor biti div.rezultati ol.popis popisa li (samo zamijenite > znakovi s razmakom)

Za izdvajanje ovih slučajnih imena stvorite novu Python skriptu ex02.py i u njega unesite sljedeće retke kodova.

s selena za uvoz webdrivera
od selena.mrežni pogonitelj.uobičajen.tipke uvoz ključeva
od selena.mrežni pogonitelj.krom.mogućnosti uvoza Opcije
chromeOptions = Opcije ()
chromeOptions.bez glave = Istina
preglednik = webdriver.Chrome (izvršna_puta = "./ drivers / chromedriver ", options = chromeOptions)
preglednik.get ("http: // random-name-generator.info / ")
nameList = preglednik.find_elements_by_css_selector ('div.rezultati ol.Popis imena li ')
za ime u popisu imena:
Naziv ispisa.tekst)
preglednik.prestati()

Kad završite, spremite ex02.py Python skripta.

Objasnio sam retke 1-8 u ranijem odjeljku ovog članka. To su isti kao u ex01.py.

Redak 10 učitava web mjesto generatora slučajnih naziva pomoću preglednik.dobiti() metoda.

Redak 11 odabire popis imena pomoću preglednik.find_elements_by_css_selector () metoda. Ova metoda koristi CSS selektor div.rezultati ol.popis popisa li pronaći popis imena. Zatim se popis imena sprema u lista imena varijabilna.

U redovima 13 i 14, a za petlja se koristi za iteraciju kroz lista imena popis li elementi. U svakoj iteraciji sadržaj li element otisnut je na konzoli.

Sada pokrenite Python skriptu ex02.py kako slijedi:

$ python3 ex02.py

Kao što vidite, Python skripta ex02.py dohvatio sva slučajna imena s web stranice.

Ako skriptu pokrenete drugi put, trebala bi vratiti novi popis slučajnih imena, kao što možete vidjeti na donjoj snimci zaslona.

Problemi s kojima se možete suočiti s trčanjem selena u načinu bez glave:

Ranije ste vidjeli da je pokretanje selena u načinu bez glave pomoću Chrome upravljačkog programa jednostavno kao postavljanje chromeOptions.bezglav zastava do Pravi.

Ovo rješenje možda neće raditi za vas na nekim Linux distribucijama. U ovom odjeljku govorit ću o nekim problemima s kojima se možete suočiti tijekom pokretanja selena u načinu bez glave pomoću web-upravljačkog programa Chrome.

Prema zadanim postavkama, web preglednik Google Chrome puno radi u zaštićenom okruženju (pokreće mnoge stvari u izoliranom okruženju). To može uzrokovati probleme prilikom pokretanja selena u načinu bez glave pomoću web-upravljačkog programa Chrome. Sandboxing za Google Chrome možete onemogućiti pomoću -bez pješčanika zastava.

Da biste dodali -bez pješčanika zastavicu, dodajte sljedeći redak prije inicijalizacije pokretačkog programa Selenium Chrome pomoću mrežni pogonitelj.Krom() metoda (redak 8 u ex01.py Python skripta).

chromeOptions.add_argument ("- bez pješčanika")

Možda ćete imati problema s obavljanjem određenih stvari u web pregledniku Google Chrome iz tvrtke Selenium, poput snimanja zaslona web stranice i tako dalje. To se može dogoditi jer u načinu bez glave Google Chrome može postaviti pogrešnu virtualnu razlučivost zaslona. Dakle, vaše web mjesto možda neće izgledati dobro. Možete postaviti željenu virtualnu razlučivost zaslona za web preglednik Google Chrome u načinu bez glave pomoću -veličina prozora opcija naredbenog retka.

Na primjer, za postavljanje širine virtualnog zaslona na 1280 px a visina do 720 px, dodaj -veličina prozora opcija naredbenog retka prije inicijalizacije pokretačkog programa Selenium Chrome pomoću mrežni pogonitelj.Krom() metoda (redak 8 u ex01.py Python skripta) kako slijedi:

chromeOptions.add_argument ("- veličina prozora = 1280,720")

Na vašem poslužitelju možda nije instaliran GPU ili GPU koji web preglednik Google Chrome neće znati koristiti. Prema zadanim postavkama, Google Chrome trebao bi automatski onemogućiti ubrzanje GPU-a ako GPU nije dostupan ili ako je dostupan nepodržani GPU. U nekim slučajevima to možda neće uspjeti. U tom slučaju, Selenium možda neće moći pokretati web preglednik Google Chrome u načinu bez glave. Da biste riješili ovaj problem, morate onemogućiti ubrzanje GPU-a pomoću -onesposobiti-gpu zastava.

Da biste dodali -onesposobiti-gpu zastavicu, dodajte sljedeći redak prije inicijalizacije pokretačkog programa Selenium Chrome pomoću mrežni pogonitelj.Krom() metoda (redak 8 u ex01.py Python skripta).

chromeOptions.add_argument (“- disable-gpu”)

Zaključak:

U ovom sam vam članku pokazao kako postaviti Selen u načinu bez glave pomoću web-upravljačkog programa Chrome. Obradio sam osnove koje će vam pomoći da započnete s bezglavom automatizacijom preglednika Selenium, web testiranjem i struganjem weba.

Također sam obradio neke od argumenata / zastavica naredbenog retka Google Chromea pomoću kojih možete riješiti neke probleme koje imate tijekom pokretanja selena u načinu bez glave pomoću web-upravljačkog programa Chrome.

Dostupne su još mnoge opcije naredbenog retka Google Chrome, koje nisam obrađivao u ovom članku. Ove opcije naredbenog retka mogu biti korisne za vaš projekt. Sve podržane opcije naredbenog retka Google Chrome možete pronaći na stranici Popis prekidača naredbenog retka Chromium, Peter Beverloo.

Kako preuzeti i igrati Sid Meier's Civilization VI na Linuxu
Uvod u igru Civilization 6 moderan je pogled na klasični koncept predstavljen u seriji igara Age of Empires. Ideja je bila prilično jednostavna; započ...
Kako instalirati i igrati Doom na Linuxu
Uvod u Doom Serija Doom nastala je 90-ih nakon izlaska originalnog Dooma. To je bio trenutni hit i od tog vremena nadalje igraća serija dobila je broj...
Vulkan za korisnike Linuxa
Sa svakom novom generacijom grafičkih kartica vidimo da programeri igara pomiču granice grafičke vjernosti i dolaze na korak od fotorealizma. No, bez ...