Szelén

Szelén futtatása fej nélkül Chrome-mal

Szelén futtatása fej nélkül Chrome-mal
Ha Selenium web-automatizálást vagy webes selejtezést szeretne végrehajtani a Chrome böngészővel, akkor alapértelmezés szerint a Chrome böngésző grafikus verzióját futtatja. Nem jelent problémát, ha a Selenium parancsfájlt Linux grafikus asztali környezetből futtatja (.e., GNOME 3, KDE, XFCE4). De ha fejetlen környezetben szeretné futtatni a Selenium szkriptet (azaz.e., Ubuntu Server, CentOS / RHEL Server), ahol még nincs telepítve grafikus asztali környezet, akkor ez nem fog működni.

Szerencsére úgy konfigurálhatja a Seleniumot, hogy a Chrome böngészőt fejetlen módban futtassa. Ebben a módban a Chrome böngésző grafikus felhasználói felület nélkül fog futni. Tehát a Selenium képes web automatizálásra, web selejtezésre, böngésző tesztekre stb. a Chrome böngésző használata Linux szervereken, ahol még nincs telepítve grafikus asztali környezet.

Ebben a cikkben bemutatom, hogyan futtathatja a Seleniumot a Chrome böngészővel fej nélküli módban. A Selenium Python könyvtárat fogom használni, és a Selenium parancsfájlokat a Python 3 programozási nyelv segítségével írom. Tehát kezdjük.

Előfeltételek:

A cikk parancsainak és példáinak kipróbálásához rendelkeznie kell,

1) Linux disztribúció (lehetőleg Ubuntu) telepítve a számítógépére.
2) A Python 3 telepítve van a számítógépére.
3) A PIP 3 telepítve van a számítógépére.
4) A Google Chrome telepítve van a számítógépére.

Számos cikket találhat ezekről a témákról a LinuxHint-en.com. Ügyeljen arra, hogy ellenőrizze őket, ha segítségre van szüksége.

A Python 3 virtuális környezet előkészítése a projekthez:

A Python virtuális környezet egy elszigetelt Python projektkönyvtár létrehozására szolgál. A PIP használatával telepített Python modulokat csak a projektkönyvtárba telepítik, nem globálisan.

Piton virtualenv modul a Python virtuális környezetek kezelésére szolgál.

Telepítheti a Python-t virtualenv modul globálisan a PIP 3 használatával, az alábbiak szerint:

$ sudo pip3 telepítse a virtualenv-t

Piton virtualenv telepíteni kell.

Hozzon létre egy projekt könyvtárat króm-fej nélküli / a jelenlegi munkakönyvtárban az alábbiak szerint:

$ mkdir -pv chrome-headless / meghajtók

Navigáljon az újonnan létrehozott projektkönyvtárhoz króm-fej nélküli / alábbiak szerint:

$ cd króm-fej nélküli /

Hozzon létre egy Python virtuális környezetet a projektkönyvtárában a következő paranccsal:

$ virtualenv .venv

A Python virtuális környezetet a .venv / könyvtár a projekt könyvtárában.

Aktiválja a projektkönyvtár Python virtuális környezetét a következő paranccsal:

$ forrás .venv / bin / aktiválás

A Selenium Python könyvtár telepítése:

A szelén könyvtár a hivatalos Python PyPI adattárban érhető el.

A Selenium Python könyvtárat a PIP 3 segítségével az alábbiak szerint telepítheti:

$ pip3 telepítse a szelént

A Selenium Python könyvtárat telepíteni kell.

A Chrome internetes illesztőprogram telepítése:

A Chrome Web Driver lehetővé teszi a Google Chrome böngésző vezérlését vagy automatizálását a Seleniumból.

Ebben a részben bemutatom, hogyan kell telepíteni a Chrome webillesztő programot.

Először nyissa meg a Google Chrome-ot, és keresse fel a chrome: // settings / help webhelyet.

Amint az oldal betöltődik, meg kell találnia a Google Chrome verziószámát a A Chrome-ról szakasz. Vegye figyelembe a verziószám első 3 szakaszát az alábbi képernyőképen jelölt módon.

A Chrome webillesztő letöltéséhez látogasson el a Chrome illesztőprogram hivatalos letöltési oldalára.

Ban,-ben Jelenlegi kiadások szakaszban elérhetőnek kell lennie a Chrome webillesztőprogramnak a Google Chrome böngésző legfrissebb kiadásaihoz, amint az az alábbi képernyőképen látható. Az egyik jelenlegi Chrome webillesztő-verziónak meg kell egyeznie a Google Chrome böngészőjével megegyező verziószámmal. A Chrome Web Driver és a Google Chrome böngésző verziószámának első 3 szakaszának meg kell egyeznie.

Ha a keresett verzió nincs a Jelenlegi kiadások részben görgessen egy kicsit lefelé, és meg kell tudnia találni.

Ha rákattint a Chrome Web Driver verziószámára, akkor annak letöltési oldalára kell kerülnie. Kattintson a chromedriver_linux64.postai irányítószám fájl innen.

Töltse le a Chrome Web Driver archívumot.

A letöltött chromedriver_linux64.postai irányítószám fájlnak a fájlban kell lennie ~ / Letöltések Könyvtár.

$ ls -lh ~ / Letöltések

Kivonat a chromedriver_linux64.postai irányítószám archívum a ~ / Letöltések könyvtárba a járművezetők / a projekt könyvtárát az alábbiak szerint:

$ unzip ~ / Letöltések / chromedriver_linux64.zip -d illesztőprogramok /

Új fájl chromedriver kell létrehozni a járművezetők / projektjének könyvtárát, amint kibontja a Chrome Web Driver archívumot, amint az az alábbi képernyőképen látható.

A Chrome internetes illesztőprogram tesztelése fej nélküli módban:

Ebben a részben bemutatom, hogyan futtathatja a Seleniumot a Chrome illesztőprogram segítségével fej nélküli módban.

Először hozzon létre egy új Python szkriptet ex01.py a projektkönyvtárban, és írja be a következő kódsorokat.

a szelénimport-meghajtóról
szelénből.web meghajtó.gyakori.kulcsok importálása kulcsok
szelénből.web meghajtó.króm.opciók importálása Beállítások
chromeOptions = Opciók ()
chromeOptions.fejetlen = Igaz
böngésző = webdriver.Chrome (végrehajtható_útvonal = "./ driver / chromedriver ", options = chromeOptions)
böngésző.get ("http: // linuxhint.com ")
print ("Cím:% s"% böngésző.cím)
böngésző.Kilépés()

Ha elkészült, mentse a ex01.py Python szkript.

Ezek a sorok importálják az összes szükséges anyagot a szelén könyvtár.

Mint korábban említettem, alapértelmezés szerint a Chrome illesztőprogram grafikus módban próbálja futtatni a Google Chrome-ot. A Google Chrome fejetlen módban történő futtatásához meg kell mondanunk a Chrome illesztőprogramnak, hogy adjon át néhány extra lehetőséget. Ez a vonal létrehoz egy Opciók objektum, amelyet később átadhatunk a Chrome webillesztőprogramnak.

A Google Chrome fejetlen módban történő futtatásához egyszerűen a fejetlen tulajdona chromeOptions tiltakozni Igaz.

Vagy használhatja a add_argument () módszere chromeOptions objektum a -fejetlen parancssori argumentum a Google Chrome fej nélküli módban történő futtatásához a Selenium Chrome webillesztő segítségével.

Használhatja a web meghajtó.Króm() módszer a Google Chrome böngésző inicializálására / futtatására a Seleniumból. A végrehajtható_útvonal argumentummal a Seleniumot a chromedriver bináris a járművezetők / a projekt könyvtárát. A opciók argument azt mondja a Seleniumnak, hogy használja az egyéni opcióinkat chromeOptions.

Miután a Selenium futtat egy Google Chrome webböngészőt a Selenium Chrome webillesztő segítségével, a böngésző tárgy. Később használhatjuk a Google Chrome-példány vezérlésére.

A böngésző.kap() módszer betölti a linuxhint.com webhely a Google Chrome böngészőben a háttérben (fej nélküli módban).

Miután az oldal betöltődött, böngésző.cím tulajdonság lesz a weboldal címe. A Python nyomtatás() metódus kinyomtatja a webhely címét a konzolon.

Aztán a böngésző.Kilépés() módszer bezárja a Google Chrome webböngészőt.

Annak teszteléséhez, hogy a Selenium képes-e fejetlen módban működni, futtassa a Python parancsfájlt ex01.py alábbiak szerint:

$ python3 ex01.py

Ki kell nyomtatnia a webhely címét a konzolra anélkül, hogy grafikus módban megnyitná a Google Chrome böngészőt.

Csak megmutatom, hogy Linux fej nélküli szerverekről működik (ahol nincs grafikus felhasználói felület telepítve), futtattam a Python szkriptet ex01.py az Ubuntu Server 20-on.04 LTS. Mint látható, a szkript nagyon jól működik.

Webes kaparás szelénnel Fej nélküli módban a Chrome webillesztő segítségével:

Ebben a részben bemutatok egy példát a Selenium webes selejtezésére a Chrome webillesztő segítségével fej nélküli módban.

Először keresse fel a véletlenszerű név-generátort.információk a Google Chrome-ból vagy bármely más webböngészőből. Ez a webhely 10 véletlenszerű nevet generál minden alkalommal, amikor újratölti az oldalt, amint az az alábbi képernyőképen látható. Célunk, hogy ezeket a véletlenszerű neveket szelén nélkül fejetlen módban nyerjük ki.

A lista HTML felépítésének megismeréséhez meg kell nyitnia a Chrome Developer Tool. Ehhez nyomja meg az egér jobb gombját (RMB) az oldalon, és kattintson a gombra Ellenőrizze vagy nyomja meg + + én.

Chrome Developer Tool meg kell nyitni. Kattintson a Ellenőrzés ikon () az alábbi képernyőképen jelölt módon.

Ezután mutasson az egérrel a listára Véletlen nevek. A listát ki kell emelni az alábbi képernyőképen jelölt módon. Ezután nyomja meg az egér bal gombját (LMB) a lista kiválasztásához.

A lista HTML kódját ki kell emelni a Elemek fül a Chrome Developer Tool. Itt a Véletlenszerű nevek listája a div elem. A div elem rendelkezik a osztály név eredmények. Belül van egy ol elem a osztály név névlista. Benne ol elem, a nevek mindegyike a li elem.

Ebből azt mondhatjuk, hogy eljutunk a li címkéket, követnünk kell div.eredmények> ol.névLista> li

Tehát, a CSS választónk az lesz div.eredmények ol.névLista li (csak cserélje ki a > táblák fehér szóközzel)

A véletlenszerű nevek kibontásához hozzon létre egy új Python szkriptet ex02.py és írja be a következő kódsorokat benne.

a szelénimport-meghajtóról
szelénből.web meghajtó.gyakori.kulcsok importálása kulcsok
szelénből.web meghajtó.króm.opciók importálása Beállítások
chromeOptions = Opciók ()
chromeOptions.fejetlen = Igaz
böngésző = webdriver.Chrome (végrehajtható_útvonal = "./ driver / chromedriver ", options = chromeOptions)
böngésző.get ("http: // random-name-generator.info / ")
nameList = böngésző.find_elements_by_css_selector ('div.eredmények ol.nameList li ')
a névhez a névlistában:
nyomtatott név.szöveg)
böngésző.Kilépés()

Ha elkészült, mentse a ex02.py Python szkript.

A cikk korábbi szakaszában ismertettem az 1–8. Sort. Ezek megegyeznek a ex01.py.

A 10. sor betölti a véletlenszerű névgenerátor webhelyét a böngésző.kap() módszer.

A 11. sor a név használatával választja ki a névlistát böngésző.find_elements_by_css_selector () módszer. Ez a módszer a CSS választót használja div.eredmények ol.névLista li hogy megtalálja a névlistát. Ezután a névlista a névlista változó.

A 13. és a 14. sorban a mert ciklust használjuk a névlista listája li elemek. Minden iterációban a li elem a konzolra van nyomtatva.

Most futtassa a Python szkriptet ex02.py alábbiak szerint:

$ python3 ex02.py

Mint látható, a Python szkript ex02.py lekérte az összes véletlenszerű nevet a weboldalról.

Ha másodszor futtatja a szkriptet, akkor a véletlen nevek új listáját kell visszaadnia, amint az az alábbi képernyőképen látható.

Problémák, amelyekkel szembesülhet a szelén futtatása fej nélküli módban:

Korábban látta, hogy a Selenium fej nélküli módban történő futtatása a Chrome illesztőprogram használatával ugyanolyan egyszerű, mint a chromeOptions.fejetlen zászló to Igaz.

Előfordulhat, hogy ez a megoldás néhány Linux disztribúció esetén nem működik az Ön számára. Ebben a részben azokról a problémákról fogok beszélni, amelyekkel szembesülhet a Selenium fej nélküli módban történő futtatása során a Chrome webillesztő segítségével.

Alapértelmezés szerint a Google Chrome böngésző sok homokozót végez (sok mindent futtat elszigetelt környezetben). Ez problémákat okozhat a Selenium fej nélküli módban történő futtatásakor a Chrome webillesztő segítségével. A. Használatával letilthatja a homokozót a Google Chrome-ban -nincs homokozó zászló.

A -nincs homokozó jelölőnégyzetet, adja hozzá a következő sort, mielőtt a Selenium Chrome illesztőprogramot inicializálja web meghajtó.Króm() módszer (8. sor ban ben ex01.py Python szkript).

chromeOptions.add_argument ("- no-sandbox")

Problémái lehetnek bizonyos dolgok készítésével a Selenium Google Chrome böngészőjében, például képernyőképek készítése a webhelyről és így tovább. Ez azért történhet meg, mert fej nélküli módban a Google Chrome helytelen virtuális képernyő felbontást állíthat be. Tehát előfordulhat, hogy a weboldala nem megfelelő. Beállíthatja a kívánt virtuális képernyő felbontást a Google Chrome böngésző számára fej nélküli módban a -ablakméret parancssori opció.

Például a virtuális képernyő szélességének beállítása 1280 px és magasságot 720 px, Add hozzá a -ablakméret parancssori opció a Selenium Chrome illesztőprogram inicializálása előtt web meghajtó.Króm() módszer (8. sor ban ben ex01.py Python szkript) az alábbiak szerint:

chromeOptions.add_argument ("- ablakméret = 1280 720")

Lehet, hogy a szerveren nincs telepítve GPU, vagy olyan GPU-val, amelyet a Google Chrome böngésző nem fog tudni használni. Alapértelmezés szerint a Google Chrome automatikusan letiltja a GPU gyorsítást, ha GPU nem áll rendelkezésre, vagy ha nem támogatott GPU áll rendelkezésre. Bizonyos esetekben ez nem sikerül. Ebben az esetben előfordulhat, hogy a Selenium nem képes fejetlen módban futtatni a Google Chrome böngészőt. A probléma megoldásához le kell tiltania a GPU gyorsítást a -disable-gpu zászló.

A -disable-gpu jelölőnégyzetet, adja hozzá a következő sort, mielőtt a Selenium Chrome illesztőprogramot inicializálja web meghajtó.Króm() módszer (8. sor ban ben ex01.py Python szkript).

chromeOptions.add_argument (“- disable-gpu”)

Következtetés:

Ebben a cikkben megmutattam, hogyan állíthatja be a Selenium fej nélküli módban a Chrome webillesztő segítségével. Áttekintettem az alapokat, amelyek segítenek a fej nélküli Selenium böngésző automatizálásának, a webes tesztelésnek és a webes kaparásnak a megkezdésében.

Kitértem néhány Google Chrome parancssori argumentumra / jelzőre, amelyekkel megoldhatja azokat a problémákat, amelyek felmerülhetnek a Selenium fej nélküli módban történő futtatásakor a Chrome webillesztő segítségével.

Sokkal több Google Chrome parancssori opció áll rendelkezésre, amelyekre ebben a cikkben nem térek ki. Ezek a parancssori opciók hasznosak lehetnek a projekt számára. Az összes támogatott Google Chrome parancssori beállítást megtalálja a Chromium parancssori kapcsolók listája Peter Beverloo által.

Hasznos eszközök Linux játékosok számára
Ha szeretsz Linuxon játszani, akkor valószínű, hogy olyan alkalmazásokat és segédprogramokat használtál, mint a Wine, a Lutris és az OBS Studio a játé...
HD Remastered Games for Linux, amelyeknek soha nem volt korábban Linux kiadásuk
Számos játékfejlesztő és kiadó a régi játékok HD remasterjével áll elő a franchise élettartamának meghosszabbítása érdekében. Kérjük, hogy a rajongók ...
Az AutoKey használata a Linux játékok automatizálásához
Az AutoKey egy asztali automatizáló segédprogram Linux és X11 rendszerekhez, Python 3, GTK és Qt programozással. A parancsfájlok és a MACRO funkcióina...