Selenium

Selēna vadīšana bez galvas ar Chrome

Selēna vadīšana bez galvas ar Chrome
Ja vēlaties veikt Selenium tīmekļa automatizāciju vai tīmekļa pārlūkošanu ar Chrome tīmekļa pārlūku, pēc noklusējuma tā darbojas Chrome tīmekļa pārlūkprogrammas grafiskā versija. Tas nav problēma, ja Selenium skriptu izmantojat no Linux grafiskās darbvirsmas vides (t.i.e., GNOME 3, KDE, XFCE4). Bet, ja jūs vēlaties palaist savu Selenium skriptu bez galvas (t.i.e., Ubuntu Server, CentOS / RHEL Server), kur jums nav instalēta grafiskā darbvirsmas vide, tad tas nedarbosies.

Par laimi, jūs varat konfigurēt Selenium, lai palaistu Chrome tīmekļa pārlūku bezroku režīmā. Šajā režīmā Chrome tīmekļa pārlūkprogramma darbosies bez jebkāda grafiska lietotāja interfeisa. Tātad, Selēns var veikt tīmekļa automatizāciju, tīmekļa pārmetumus, pārlūka testus utt. izmantojot Chrome tīmekļa pārlūkprogrammu Linux serveros, kur jums nav instalēta grafiskā darbvirsmas vide.

Šajā rakstā es jums parādīšu, kā palaist Selenium ar Chrome tīmekļa pārlūku bezroku režīmā. Es izmantošu Selenium Python bibliotēku un rakstīšu Selenium skriptus, izmantojot Python 3 programmēšanas valodu. Tātad, sāksim darbu.

Priekšnosacījumi:

Lai izmēģinātu komandas un piemērus no šī raksta, jums ir jābūt,

1) Linux izplatīšana (vēlams, Ubuntu), kas instalēta jūsu datorā.
2) Python 3 instalēts jūsu datorā.
3) PIP 3 instalēts jūsu datorā.
4) Google Chrome ir instalēts jūsu datorā.

Vietnē LinuxHint varat atrast daudz rakstu par šīm tēmām.com. Noteikti pārbaudiet tos, ja jums nepieciešama palīdzība.

Python 3 virtuālās vides sagatavošana projektam:

Python virtuālo vidi izmanto, lai izveidotu izolētu Python projekta direktoriju. Python moduļi, kurus instalējat, izmantojot PIP, tiks instalēti tikai projekta direktorijā, nevis globāli.

Python virtualenv modulis tiek izmantots, lai pārvaldītu Python virtuālās vides.

Jūs varat instalēt Python virtualenv moduli, izmantojot PIP 3 šādi:

$ sudo pip3 instalējiet virtualenv

Python virtualenv jāuzstāda.

Izveidojiet projekta direktoriju hroma bez galvas / pašreizējā darba direktorijā šādi:

$ mkdir -pv hroma bez galvas / draiveri

Pārejiet uz jaunizveidoto projektu direktoriju hroma bez galvas / sekojoši:

$ cd hroma bez galvas /

Izveidojiet Python virtuālo vidi projekta direktorijā ar šādu komandu:

$ virtualenv .venv

Virtuālā vide Python ir jāizveido .venv / projekta direktorijā.

Aktivizējiet projekta direktorijas virtuālo vidi Python ar šādu komandu:

$ avots .venv / bin / aktivizēt

Selenium Python bibliotēkas instalēšana:

Selēna bibliotēka ir pieejama oficiālajā Python PyPI repozitorijā.

Selenium Python bibliotēku, izmantojot PIP 3, varat instalēt šādi:

$ pip3 instalējiet selēnu

Būtu jāinstalē Selenium Python bibliotēka.

Chrome tīmekļa draivera instalēšana:

Chrome tīmekļa draiveris ļaus jums kontrolēt vai automatizēt Google Chrome tīmekļa pārlūkprogrammu no Selenium.

Šajā sadaļā es jums parādīšu, kā instalēt Chrome tīmekļa draiveri.

Vispirms atveriet pārlūku Google Chrome un apmeklējiet vietni chrome: // settings / help.

Kad lapa ir ielādēta, vietnē Google jāatrod Google Chrome versijas numurs Par Chrome sadaļā. Atzīmējiet versijas numura pirmās 3 sadaļas, kā norādīts zemāk redzamajā ekrānuzņēmumā.

Lai lejupielādētu Chrome tīmekļa draiveri, apmeklējiet oficiālo Chrome draivera lejupielādes lapu.

Iekš Pašreizējie izlaidumi sadaļai Chrome tīmekļa draiverim jābūt pieejamam jaunākajiem Google Chrome tīmekļa pārlūkprogrammas izlaidumiem, kā redzat zemāk redzamajā ekrānuzņēmumā. Vienam no pašreizējiem Chrome tīmekļa draivera izlaidumiem ir jābūt atbilstošam versijas numuram ar jūsu Google Chrome tīmekļa pārlūkprogrammu. Chrome tīmekļa draivera un Google Chrome tīmekļa pārlūkprogrammas versijas numura pirmajām 3 sadaļām ir jāsakrīt.

Ja meklētā versija nav Pašreizējie izlaidumi sadaļā, nedaudz ritiniet uz leju, un jums vajadzētu to atrast.

Noklikšķinot uz Chrome tīmekļa draivera versijas numura, tam vajadzētu pāriet uz tā lejupielādes lapu. Noklikšķiniet uz chromedriver_linux64.zip failu no šejienes.

Būtu jālejupielādē Chrome tīmekļa draivera arhīvs.

Lejupielādēts chromedriver_linux64.zip failam jābūt jūsu ~ / Lejupielādes direktorijā.

$ ls -lh ~ / Lejupielādes

Izraksts chromedriver_linux64.zip arhīvs no ~ / Lejupielādes direktoriju vadītāji / projekta direktoriju šādi:

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

Jauns fails hromedriver būtu jāizveido vadītāji / projekta direktoriju, tiklīdz tiek izvilkts Chrome tīmekļa draivera arhīvs, kā redzat zemāk redzamajā ekrānuzņēmumā.

Pārbaudot Chrome tīmekļa draiveri režīmā bez galvas:

Šajā sadaļā es jums parādīšu, kā palaist Selenium, izmantojot Chrome draiveri bez galvas režīmā.

Vispirms izveidojiet jaunu Python skriptu ex01.py projekta direktorijā un ierakstiet tajā sekojošās kodu rindas.

no selēna importa tīmekļa draivera
no selēna.tīmekļa draiveris.bieži.atslēgu importēšana
no selēna.tīmekļa draiveris.hroms.opciju importēšana
chromeOptions = Opcijas ()
hroms Iespējas.bez galvas = patiess
pārlūks = tīmekļa draiveris.Chrome (izpildāmā_ceļš = "./ draiveri / chromedriver ", options = chromeOptions)
pārlūku.get ("http: // linuxhint.com ")
drukāt ("Nosaukums:% s"% pārlūks.nosaukums)
pārlūku.atmest ()

Kad esat pabeidzis, saglabājiet ex01.py Python skripts.

Šīs rindas importē visu nepieciešamo saturu no selēns bibliotēka.

Kā jau teicu iepriekš, pēc noklusējuma Chrome draiveris mēģina palaist Google Chrome grafiskā režīmā. Lai palaistu Google Chrome bezgalīga režīmā, mums jāpasaka Chrome draiverim nodot dažas papildu iespējas. Šī līnija rada Iespējas objektu, kuru mēs vēlāk varam nodot Chrome tīmekļa draiverim.

Varat palaist Google Chrome bezgalīgas režīmā, vienkārši iestatot bez galvas īpašums hroms Iespējas iebilst pret Patiesi.

Vai arī varat izmantot add_argument () metode hroms Iespējas objektu, lai pievienotu -bez galvas komandrindas arguments, lai palaistu Google Chrome bezroku režīmā, izmantojot Selenium Chrome tīmekļa draiveri.

Jūs varat izmantot a tīmekļa draiveris.Chrome () metode, lai inicializētu / palaistu Google Chrome tīmekļa pārlūku no Selenium. The izpildāms_ceļš arguments tiek izmantots, lai liktu Selenium izmantot hromedriver binārs no vadītāji / projekta direktoriju. The iespējas arguments liek Selenijam izmantot mūsu pielāgotās opcijas hroms Iespējas.

Kad Selenium palaiž Google Chrome tīmekļa pārlūkprogrammu, izmantojot Selenium Chrome tīmekļa draiveri, tā atgriež a pārlūku objekts. Mēs to varam izmantot, lai vēlāk kontrolētu Google Chrome gadījumu.

The pārlūku.gūt() metode ielādē linuxhint.com vietne Google Chrome tīmekļa pārlūkprogrammā fonā (bez galvas režīmā).

Kad lapa ir ielādēta, pārlūku.nosaukums īpašumam būs vietnes nosaukums. Python izdrukāt () metode konsolē izdrukā vietnes nosaukumu.

Tad, pārlūku.atmest () metode aizver Google Chrome tīmekļa pārlūku.

Lai pārbaudītu, vai selēns var darboties režīmā bez galvas, palaidiet Python skriptu ex01.py sekojoši:

$ python3 ex01.py

Tam vajadzētu drukāt vietnes nosaukumu konsolē, neatverot Google Chrome tīmekļa pārlūku grafiskā režīmā.

Tikai, lai parādītu, ka tas darbojas no Linux serveriem bez galvas (kur nav instalēta grafiskā lietotāja saskarne), esmu palaidis Python skriptu ex01.py Ubuntu Server 20.04 LTS. Kā redzat, skripts darbojas lieliski.

Tīmekļa nokasīšana ar selēnu bezgalvu režīmā, izmantojot Chrome tīmekļa draiveri:

Šajā sadaļā es jums parādīšu tīmekļa metāllūžņu Selenium piemēru, izmantojot Chrome tīmekļa draiveri bezroku režīmā.

Vispirms apmeklējiet izlases nosaukumu ģeneratoru.informācija no Google Chrome vai jebkura cita tīmekļa pārlūka. Šī vietne katru reizi, kad atkārtoti ielādējat lapu, ģenerēs 10 nejaušus nosaukumus, kā redzat zemāk redzamajā ekrānuzņēmumā. Mūsu mērķis ir iegūt šos nejaušos nosaukumus, izmantojot Selēnu bezgalības režīmā.

Lai uzzinātu saraksta HTML struktūru, jums jāatver Chrome izstrādātāja rīks. Lai to izdarītu, nospiediet peles labo pogu (RMB) lapā un noklikšķiniet uz Pārbaudiet vai nospiediet + + Es.

Chrome izstrādātāja rīks būtu jāatver. Noklikšķiniet uz Pārbaudīt ikonu () kā norādīts zemāk redzamajā ekrānuzņēmumā.

Pēc tam virziet kursoru virs saraksta Nejauši nosaukumi. Saraksts ir jāizceļ, kā norādīts zemāk esošajā ekrānuzņēmumā. Pēc tam nospiediet peles kreiso pogu (LMB), lai atlasītu sarakstu.

Saraksta HTML kods ir jāizceļ Elementi cilne Chrome izstrādātāja rīks. Šeit nejaušo nosaukumu saraksts atrodas a div elements. The div elementam ir klasē nosaukums rezultātiem. Tās iekšpusē mums ir ol elements ar klasē nosaukums nameList. Iekšpusē ol elements, katrs no nosaukumiem atrodas a li elements.

No tā mēs varam teikt, ka, lai nokļūtu li tagus, mums jāievēro div.rezultāti> ol.nameList> li

Tātad, mūsu CSS atlasītājs būs div.rezultāti ol.nameList li (vienkārši nomainiet > zīmes ar atstarpi)

Lai iegūtu šos nejaušos nosaukumus, izveidojiet jaunu Python skriptu ex02.py un tajā ierakstiet šādas kodu rindas.

no selēna importa tīmekļa draivera
no selēna.tīmekļa draiveris.bieži.atslēgu importēšana
no selēna.tīmekļa draiveris.hroms.opciju importēšana
chromeOptions = Opcijas ()
hroms Iespējas.bez galvas = patiess
pārlūks = tīmekļa draiveris.Chrome (izpildāmā_ceļš = "./ draiveri / chromedriver ", options = chromeOptions)
pārlūku.get ("http: // izlases nosaukumu ģenerators.info / ")
nameList = pārlūks.find_elements_by_css_selector ('div.rezultāti ol.nameList li ')
vārdam nameList:
drukāt (nosaukums.teksts)
pārlūku.atmest ()

Kad esat pabeidzis, saglabājiet ex02.py Python skripts.

Esmu izskaidrojis 1.-8. Rindu šī raksta iepriekšējā sadaļā. Tie ir tādi paši kā ex01.py.

10. rindā tiek ielādēta nejaušo nosaukumu ģeneratora vietne, izmantojot pārlūku.gūt() metodi.

11. rindā vārdu saraksts tiek atlasīts, izmantojot pārlūku.find_elements_by_css_selector () metodi. Šajā metodē tiek izmantots CSS selektors div.rezultāti ol.nameList li lai atrastu vārdu sarakstu. Pēc tam vārdu saraksts tiek saglabāts mapē nameList mainīgais.

13. un 14. rindā a priekš cilpa tiek izmantota iterācijai caur nameList saraksts li elementi. Katrā atkārtošanas reizē saturs li elements ir uzdrukāts uz konsoles.

Tagad palaidiet Python skriptu ex02.py sekojoši:

$ python3 ex02.py

Kā redzat, Python skripts ex02.py ielādēja visus nejaušos vārdus no tīmekļa lapas.

Ja palaižat skriptu otro reizi, tam jāatgriež jauns izlases nosaukumu saraksts, kā redzat zemāk redzamajā ekrānuzņēmumā.

Problēmas, ar kurām jūs varat saskarties, darbinot selēnu režīmā Bez galvas:

Jūs jau iepriekš redzējāt, ka Selenium darbināšana bezroku režīmā, izmantojot Chrome draiveri, ir tikpat vienkārša kā hroms Iespējas.bez galvas karogs uz Patiesi.

Šis risinājums var nedarboties dažos Linux izplatījumos. Šajā sadaļā es runāšu par dažām problēmām, ar kurām varat saskarties, darbinot Selenium režīmā bez galvas, izmantojot Chrome tīmekļa draiveri.

Pēc noklusējuma Google Chrome tīmekļa pārlūkprogramma veic daudz smilšu kastes (daudzas lietas darbojas izolētā vidē). Tas var radīt problēmas, kad Selenium darbojas bezroku režīmā, izmantojot Chrome tīmekļa draiveri. Pārlūkprogrammā Google Chrome varat atspējot smilškastes izmantošanu, izmantojot -bez smilšu kastes karogu.

Lai pievienotu -bez smilšu kastes karodziņu, pievienojiet šo rindu pirms Selenium Chrome draivera inicializācijas, izmantojot tīmekļa draiveris.Chrome () metode (8. rindiņa iekšā ex01.py Python skripts).

hroms Iespējas.add_argument ("- nav smilšu kastes")

Jums var rasties problēmas, veicot noteiktu saturu Google Chrome tīmekļa pārlūkprogrammā no Selenium, piemēram, veicot vietnes ekrānuzņēmumus utt. Tas var notikt, jo režīmā bez galvas Google Chrome var iestatīt nepareizu virtuālā ekrāna izšķirtspēju. Tātad jūsu vietne var izskatīties nepareizi. Izmantojot Chrome, varat iestatīt vēlamo virtuālā ekrāna izšķirtspēju Google Chrome tīmekļa pārlūkprogrammai bez galvas režīmā -loga izmērs komandrindas opcija.

Piemēram, lai iestatītu virtuālā ekrāna platumu uz 1280 pikseļi un augstums līdz 720 pikseļi, pievienot -loga izmērs komandrindas opcija pirms Selenium Chrome draivera inicializācijas, izmantojot tīmekļa draiveris.Chrome () metode (8. rindiņa iekšā ex01.py Python skripts) šādi:

hroms Iespējas.add_argument ("- loga izmērs = 1280 720")

Iespējams, ka jūsu serverī nav instalēts GPU vai GPU, kuru Google Chrome tīmekļa pārlūkprogramma nezinās, kā to izmantot. Pēc noklusējuma pārlūkam Google Chrome automātiski jāatspējo GPU paātrinājums, ja GPU nav pieejams vai ja ir pieejams neatbalstīts GPU. Dažos gadījumos tas var neizdoties. Tādā gadījumā Selenium, iespējams, nevarēs palaist Google Chrome tīmekļa pārlūku bez galvas režīmā. Lai atrisinātu šo problēmu, jums ir jāatspējo GPU paātrinājums, izmantojot -atspējot-gpu karogu.

Lai pievienotu -atspējot-gpu karodziņu, pievienojiet šo rindu pirms Selenium Chrome draivera inicializācijas, izmantojot tīmekļa draiveris.Chrome () metode (8. rindiņa iekšā ex01.py Python skripts).

hroms Iespējas.add_argument (“- atspējot-gpu”)

Secinājums:

Šajā rakstā es jums parādīju, kā iestatīt Selen režīmā bez galvas, izmantojot Chrome tīmekļa draiveri. Esmu apskatījis pamatus, kas palīdzēs jums sākt darbu ar Selenium pārlūka automatizāciju bez galvas, tīmekļa testēšanu un tīmekļa nokasīšanu.

Esmu aplūkojis arī dažus Google Chrome komandrindas argumentus / karodziņus, kurus varat izmantot, lai atrisinātu dažas problēmas, kas jums var rasties, darbinot Selenium bezroku režīmā, izmantojot Chrome tīmekļa draiveri.

Ir pieejamas vēl daudzas citas Google Chrome komandrindas opcijas, kuras es šajā rakstā neaptvēru. Šīs komandrindas opcijas var būt noderīgas jūsu projektam. Visas atbalstītās Google Chrome komandrindas opcijas varat atrast Pītera Beverloo Chromium komandrindas slēdžu sarakstā.

Kā palielināt FPS Linux?
FPS apzīmē Kadri sekundē. FPS uzdevums ir izmērīt kadru ātrumu video atskaņošanā vai spēļu izrādēs. Vienkāršos vārdos nepārtrauktu pilnekrāna attēlu s...
Populārākās Oculus App Lab spēles
Ja esat Oculus austiņu īpašnieks, jums ir jāsazinās par sānu ielādi. Sānu ielāde ir process, kurā austiņās tiek instalēts saturs, kas nav veikals. Sid...
10 labākās spēles, kuras spēlēt Ubuntu
Windows platforma ir bijusi viena no dominējošajām spēļu platformām, jo ​​mūsdienās tiek attīstīts milzīgs spēļu skaits, lai atbalstītu Windows. Vai k...