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ólszelé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
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ólszelé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.