Ez a cikk bemutatja, hogyan kell beállítani a Selenium -ot a Linux disztribúción (azaz Ubuntu -n), valamint bemutatja az alapvető webes automatizálást és a selejtezést a Selenium Python 3 könyvtárral.
Előfeltételek
A cikkben használt parancsok és példák kipróbálásához az alábbiakkal kell rendelkeznie:
1) Linux disztribúció (lehetőleg Ubuntu) telepítve a számítógépére.
2) Python 3 telepítve a számítógépre.
3) A PIP 3 telepítve van a számítógépre.
4) A számítógépére telepített Google Chrome vagy Firefox webböngésző.
Sok cikket talál ezekről a témákról a címen LinuxHint.com . Feltétlenül nézze meg ezeket a cikkeket, ha további segítségre van szüksége.
A Python 3 virtuális környezetének 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 segítségével telepített Python modulok csak a projektkönyvtárba kerülnek telepítésre, nem pedig globálisan.
A Python virtualenv modul a Python virtuális környezetek kezelésére szolgál.
Telepítheti a Python programot virtualenv modul globálisan a PIP 3 használatával, az alábbiak szerint:
$ sudo pip3 install virtualenvA PIP3 letölti és globálisan telepíti az összes szükséges modult.
Ezen a ponton a Python virtualenv modult globálisan kell telepíteni.
Hozza létre a projektkönyvtárat python-szelén-alap/ a jelenlegi munkakönyvtárban, az alábbiak szerint:
$ mkdir -pv python-selenium-basic/driversKeresse meg az újonnan létrehozott projektkönyvtárat python-szelén-alap/ , alábbiak szerint:
$CDpython-szelén-alap/Hozzon létre egy Python virtuális környezetet a projekt könyvtárában a következő paranccsal:
$ virtualenv.envA Python virtuális környezetet most létre kell hozni a projektkönyvtárban. ”
Aktiválja a Python virtuális környezetet a projektkönyvtárban a következő paranccsal:
$ forrás.env/bin/activAmint láthatja, a Python virtuális környezet aktiválva van ehhez a projektkönyvtárhoz.
A Selenium Python Library telepítése
A Selenium Python könyvtár elérhető a Python PyPI hivatalos tárházában.
Ezt a könyvtárat a PIP 3 segítségével telepítheti az alábbiak szerint:
$ pip3 telepítse a szeléntA Selenium Python könyvtárat most telepíteni kell.
Most, hogy a Selenium Python könyvtár telepítve van, a következő dolog, amit telepítenie kell, és telepítenie kell egy kedvenc illesztőprogramját kedvenc böngészőjéhez. Ebben a cikkben megmutatom, hogyan kell telepíteni a Firefox és a Chrome internetes illesztőprogramjait a Selenium számára.
A Firefox Gecko illesztőprogram telepítése
A Firefox Gecko illesztőprogram lehetővé teszi a Firefox webböngészőjének vezérlését vagy automatizálását a szelén használatával.
A Firefox Gecko illesztőprogram letöltéséhez látogasson el a A GitHub kiadja a mozilla/geckodriver oldalát webböngészőből.
Amint láthatja, a v0.26.0 a Firefox Gecko illesztőprogramjának legújabb verziója a cikk írásának idején.
A Firefox Gecko illesztőprogram letöltéséhez görgessen le egy kicsit, és kattintson az Linux geckodriver tar.gz archívumára, az operációs rendszer architektúrájától függően.
Ha 32 bites operációs rendszert használ, kattintson a gombra geckodriver-v0.26.0-linux32.tar.gz link.
Ha 64 bites operációs rendszert használ, kattintson a gombra geckodriver-v0.26.0-linuxx64.tar.gz link.
Esetemben letöltöm a Firefox Gecko Driver 64 bites verzióját.
A böngészőnek meg kell adnia az archívum mentését. Válassza a lehetőséget Fájl mentése majd kattintson rendben .
A Firefox Gecko illesztőprogram -archívumát a ~/Letöltések Könyvtár.
Kivonat a geckodriver-v0.26.0-linux64.tar.gz archívum a ~/Letöltések könyvtárat a sofőrök/ a projekt könyvtárába a következő parancs beírásával:
$kátrány -xzf~/Letöltések/geckodriver-v0.26.0-linux64.tar.gz-Cjárművezetők/
A Firefox Gecko illesztőprogram archívumának kibontása után új gekkó sofőr bináris fájlt kell létrehozni a sofőrök/ a projekt könyvtárában, amint az az alábbi képernyőképen is látható.
A Selenium Firefox Gecko illesztőprogram tesztelése
Ebben a szakaszban megmutatom, hogyan kell beállítani a legelső Selenium Python -szkriptet annak ellenőrzésére, hogy a Firefox Gecko illesztőprogram működik -e.
Először nyissa meg a projekt könyvtárat python-szelén-alap/ kedvenc IDE -jével vagy szerkesztőjével. Ebben a cikkben a Visual Studio Code -ot fogom használni.
Hozza létre az új Python -parancsfájlt ex01.py , és írja be a következő sorokat a parancsfájlba.
tól tőlszelénimportwebmeghajtótól tőlszelén.webmeghajtó.gyakori.kulcsok importKulcsok
tól től idő importalvás
böngésző=webmeghajtó.Firefox(futtatható_útvonal='./drivers/geckodriver')
böngésző.kap('http://www.google.com')
alvás(5)
böngésző.Kilépés()
Ha elkészült, mentse a ex01.py Python szkript.
A kódot a cikk későbbi részében magyarázom.
A következő sor a Selenium -ot a Firefox Gecko illesztőprogram használatára konfigurálja sofőrök/ a projekt könyvtárát.
Futtassa a következőt annak ellenőrzéséhez, hogy a Firefox Gecko illesztőprogram működik -e a szelénnel ex01.py Python szkript:
$ python3 ex01.pyA Firefox webböngészőnek automatikusan meg kell látogatnia a Google.com webhelyet, és 5 másodperc múlva bezárnia magát. Ha ez megtörténik, akkor a Selenium Firefox Gecko illesztőprogram megfelelően működik.
A Chrome webes illesztőprogram telepítése
A Chrome internetes illesztőprogram lehetővé teszi a Google Chrome webböngészőjének vezérlését vagy automatizálását a szelén használatával.
A Chrome Internetes illesztőprogramnak ugyanazt a verzióját kell letöltenie, mint a Google Chrome böngészőjének verzióját.
A Google Chrome böngésző verziószámának megtekintéséhez keresse fel a következő oldalt chrome: // settings/help a Google Chrome -ban. A verziószámnak szerepelnie kell a A Chrome -ról szakaszban, amint az az alábbi képernyőképen is látható.
Esetemben a verziószám az 83.0.4103.116 . A verziószám első három része ( 83.0.4103 , az én esetemben) meg kell egyeznie a Chrome Web Driver verziószámának első három részével.
A Chrome Web Driver letöltéséhez látogasson el a hivatalos Chrome illesztőprogram letöltési oldal .
Ban,-ben Jelenlegi kiadások szakaszban elérhető lesz a Google Web böngésző legfrissebb kiadásaihoz tartozó Chrome webillesztőprogram, amint az az alábbi képernyőképen is látható.
Ha az Ön által használt Google Chrome verzió nem szerepel a Jelenlegi kiadások szakaszban, görgessen le egy kicsit, és meg kell találnia a kívánt verziót.
Miután rákattintott a megfelelő Chrome Web Driver verzióra, a következő oldalra kell irányítania. Kattintson a chromedriver_linux64.zip linkre, ahogy az az alábbi képernyőképen is látható.
Most le kell tölteni a Chrome Web Driver archívumát.
A Chrome Web Driver archívumot most le kell tölteni a ~/Letöltések Könyvtár.
Kivonhatja a chromedriver-linux64.zip archívum a ~/Letöltések könyvtárat a sofőrök/ a projekt könyvtárát a következő paranccsal:
$ unzip~/Letöltések/chromedriver_linux64.postai irányítószám-d illesztőprogramok/
A Chrome Internetes illesztőprogram archívumának kibontása után új chromedriver bináris fájlt kell létrehozni a sofőrök/ a projekt könyvtárában, amint az az alábbi képernyőképen is látható.
A Selenium Chrome webes illesztőprogram tesztelése
Ebben a szakaszban megmutatom, hogyan állíthatja be a legelső Selenium Python -szkriptjét annak tesztelésére, hogy a Chrome internetes illesztőprogram működik -e.
Először hozza létre az új Python parancsfájlt ex02.py , és írja be a következő kódsorokat a parancsfájlba.
tól tőlszelénimportwebmeghajtótól tőlszelén.webmeghajtó.gyakori.kulcsok importKulcsok
tól től idő importalvás
böngésző=webmeghajtó.Króm(futtatható_útvonal='./drivers/chromedriver')
böngésző.kap('http://www.google.com')
alvás(5)
böngésző.Kilépés()
Ha elkészült, mentse a ex02.py Python szkript.
A kódot a cikk későbbi részében magyarázom.
A következő sor a Selenium -ot a Chrome webes illesztőprogram használatára konfigurálja sofőrök/ a projekt könyvtárát.
Annak ellenőrzéséhez, hogy a Chrome internetes illesztőprogram működik -e a szelénnel, futtassa a ex02.py Python -szkript, az alábbiak szerint:
$ python3 ex01.pyA Google Chrome webböngészőnek automatikusan fel kell keresnie a Google.com webhelyet, és 5 másodperc múlva bezárnia magát. Ha ez megtörténik, akkor a Selenium Firefox Gecko illesztőprogram megfelelően működik.
A webkaparás alapjai szelénnel
Mostantól a Firefox böngészőt fogom használni. Ha szeretné, használhatja a Chrome -ot is.
Egy alapvető Selenium Python szkriptnek úgy kell kinéznie, mint az alábbi képernyőképen látható szkript.
Először importálja a szelént webmeghajtó tól szelén modul.
Ezután importálja a Kulcsok tól től szelén.webdriver.common.kulcsok . Ez segít elküldeni a billentyűzetbillentyűket a Selenium által automatizált böngészőbe.
A következő sor létrehozza a böngésző objektum a Firefox webböngészőhöz a Firefox Gecko illesztőprogram (Webdriver) használatával. Ezzel az objektummal vezérelheti a Firefox böngésző műveleteit.
Weboldal vagy URL betöltése (betöltöm a webhelyet https://www.duckduckgo.com ), hívja a kap() módszere a böngésző objektumot a Firefox böngészőben.
A szelén használatával írhatja a teszteket, végezhet webes törlést, és végül bezárhatja a böngészőt a Kilépés() módszere a böngésző tárgy.
Fent a Selenium Python szkript alapvető elrendezése látható. Ezeket a sorokat a Selenium Python szkriptekbe fogja írni.
1. példa: Egy weboldal címének kinyomtatása
Ez lesz a legegyszerűbb példa a szelén használatával. Ebben a példában kinyomtatjuk a meglátogatott weboldal címét.
Hozza létre az új fájlt ex04.py és írja be a következő kódsorokat.
tól tőlszelénimportwebmeghajtótól tőlszelén.webmeghajtó.gyakori.kulcsok importKulcsok
böngésző=webmeghajtó.Firefox(futtatható_útvonal='./drivers/geckodriver')
böngésző.kap('https://www.duckduckgo.com')
nyomtatás('Cím: %s'% böngésző.cím)
böngésző.Kilépés()
Ha elkészült, mentse a fájlt.
Itt, a browser.title a meglátogatott weboldal címének és a nyomtatás() funkciót fogja használni a cím nyomtatásához a konzolban.
Futtatása után a ex04.py szkript, így kell lennie:
1) Nyissa meg a Firefoxot
2) Töltse be a kívánt weboldalt
3) Töltse le az oldal címét
4) Nyomtassa ki a címet a konzolon
5) Végül zárja be a böngészőt
Mint látható, a ex04.py script szépen kinyomtatta a weboldal címét a konzolban.
$ python3 ex04.py2. példa: Több weboldal címének nyomtatása
Az előző példához hasonlóan ugyanazt a módszert használhatja több weboldal címének kinyomtatására a Python ciklus használatával.
Ennek megértéséhez hozza létre az új Python -parancsfájlt ex05.py és írja be a következő kódsorokat a parancsfájlba:
tól tőlszelénimportwebmeghajtótól tőlszelén.webmeghajtó.gyakori.kulcsok importKulcsok
böngésző=webmeghajtó.Firefox(futtatható_útvonal='./drivers/geckodriver')
URL -ek= ['https://www.duckduckgo.com', 'https://linuxhint.com', 'https://yahoo.com']
számáraurlban benURL -ek:
böngésző.kap(url)
nyomtatás('Cím: %s'% böngésző.cím)
böngésző.Kilépés()
Ha elkészült, mentse el a Python parancsfájlt ex05.py .
Itt, a URL -ek lista megőrzi az egyes weboldalak URL -jét.
NAK NEK számára ciklus a iterálásra szolgál a URL -ek listaelemeket.
A Selenium minden iterációkor azt mondja a böngészőnek, hogy látogassa meg a url és megkapja a weboldal címét. Miután a szelén kinyerte a weboldal címét, kinyomtatja a konzolon.
Futtassa a Python szkriptet ex05.py , és látnia kell minden weboldal címét a URL -ek lista.
$ python3 ex05.pyEz egy példa arra, hogy a Selenium hogyan tudja elvégezni ugyanazt a feladatot több weboldallal vagy webhellyel.
3. példa: Adatok kinyerése egy weboldalról
Ebben a példában megmutatom az adatok kinyerésének alapjait a weboldalakról a szelén használatával. Ezt webkaparásnak is nevezik.
Először látogasson el a Random.org link a Firefoxból. Az oldalnak véletlenszerű karakterláncot kell generálnia, amint az az alábbi képernyőképen látható.
A véletlen karakterlánc -adatok kinyeréséhez a szelén segítségével ismernie kell az adatok HTML -ábrázolását is.
Ha meg szeretné tekinteni, hogyan jelennek meg a véletlen karakterláncok adatai a HTML -ben, válassza ki a véletlen karakterlánc adatait, nyomja meg a jobb egérgombot (RMB), majd kattintson a Ellenőrizze az elemet (Q) , amint azt az alábbi képernyőkép is megjegyzi.
Az adatok HTML -ábrázolását a Ellenőr lapon, amint az az alábbi képernyőképen is látható.
A gombra is kattinthat Ellenőrzés ikon ( ) hogy ellenőrizze az oldalon található adatokat.
Kattintson az ellenőrzés ikonra (), és vigye az egérmutatót a kivonni kívánt véletlen karakterlánc -adatok fölé. Az adatok HTML -ábrázolását ugyanúgy kell megjeleníteni, mint korábban.
Mint látható, a véletlen karakterlánc -adatok HTML -be vannak csomagolva számára címkét, és tartalmazza az osztályt adat .
Most, hogy ismerjük a kinyerni kívánt adatok HTML -ábrázolását, létrehozunk egy Python -szkriptet az adatok kinyeréséhez a szelén segítségével.
Hozza létre az új Python -parancsfájlt ex06.py és írja be a következő kódsorokat a parancsfájlba
tól tőlszelénimportwebmeghajtótól tőlszelén.webmeghajtó.gyakori.kulcsok importKulcsok
böngésző=webmeghajtó.Firefox(futtatható_útvonal='./drivers/geckodriver')
böngésző.kap(„https://www.random.org/strings/?num=1&len=20&digits
= on & upperalpha = on & loweralpha = on & unique = on & format = html & rnd = new ')
dataElement=böngésző.find_element_by_css_selector('pre.data')
nyomtatás(dataElement.szöveg)
böngésző.Kilépés()
Ha elkészült, mentse a ex06.py Python szkript.
Itt, a browser.get () módszer betölti a weboldalt a Firefox böngészőben.
Az browser.find_element_by_css_selector () metódus az oldal HTML -kódjában keres egy adott elemet, és visszaadja azt.
Ebben az esetben az elem az lenne pre.data , az számára címke, amely az osztály nevét tartalmazza adat .
Valami alatt pre.data elemet tárolta a dataElement változó.
A szkript ezután kinyomtatja a kiválasztott szöveg tartalmát pre.data elem.
Ha futtatja a ex06.py Python szkript, ki kell vonnia a véletlen karakterlánc adatait a weboldalról, amint az az alábbi képernyőképen látható.
$ python3 ex06.pyMint látható, minden alkalommal, amikor futtatom a ex06.py Python szkript, más véletlen karakterlánc -adatokat von ki a weboldalról.
4. példa: Adatok listájának kinyerése a weboldalról
Az előző példa megmutatta, hogyan lehet kinyerni egyetlen adatelemet egy weboldalról a szelén használatával. Ebben a példában megmutatom, hogyan kell a szelént használni az adatok listájának kinyeréséhez egy weboldalról.
Először látogasson el a random-name-generator.info a Firefox webböngészőből. Ez a webhely tíz véletlenszerű nevet fog generálni minden alkalommal, amikor újból betölti az oldalt, amint az az alábbi képernyőképen is látható. Célunk, hogy ezeket a véletlenszerű neveket a szelén segítségével nyerjük ki.
Ha alaposabban megvizsgálja a névlistát, láthatja, hogy ez egy rendezett lista ( meghal címke). Az meghal címke tartalmazza az osztály nevét is névlista . Minden véletlenszerű név listaelemként jelenik meg ( a címke) belsejében meghal címke.
Ezen véletlenszerű nevek kinyeréséhez hozza létre az új Python -parancsfájlt ex07.py és írja be a következő kódsorokat a parancsfájlba.
tól tőlszelénimportwebmeghajtótól tőlszelén.webmeghajtó.gyakori.kulcsok importKulcsok
böngésző=webmeghajtó.Firefox(futtatható_útvonal='./drivers/geckodriver')
böngésző.kap('http://random-name-generator.info/')
névlista=böngésző.find_elements_by_css_selector('ol.nameList li')
számáranévban bennévlista:
nyomtatás(név.szöveg)
böngésző.Kilépés()
Ha elkészült, mentse a ex07.py Python szkript.
Itt, a browser.get () metódus betölti a véletlenszerű névgenerátor weboldalát a Firefox böngészőben.
Az browser.find_elements_by_css_selector () módszer a CSS választót használja ol.névLista li hogy megtalálja az összeset a elemek a meghal címke az osztály nevével névlista . Az összes kijelöltet tároltam a elemek a névlista változó.
NAK NEK számára ciklus a iterálásra szolgál a névlista listája a elemeket. Minden iterációban a a elem a konzolra van nyomtatva.
Ha futtatja a ex07.py Python szkript, lekér minden véletlenszerű nevet a weboldalról, és kinyomtatja a képernyőn, amint az az alábbi képernyőképen látható.
$ python3 ex07.pyHa másodszor futtatja a szkriptet, akkor a véletlenszerű felhasználói nevek új listáját kell visszaadnia, amint az az alábbi képernyőképen látható.
5. példa: Űrlap elküldése - Keresés a DuckDuckGo -n
Ez a példa ugyanolyan egyszerű, mint az első példa. Ebben a példában meglátogatom a DuckDuckGo keresőmotort, és rákeresek a kifejezésre szelén hq szelén használatával.
Először is, látogasson el DuckDuckGo keresőmotor a Firefox webböngészőből.
Ha megvizsgálja a keresési beviteli mezőt, annak azonosítóval kell rendelkeznie search_form_input_homepage , amint az az alábbi képernyőképen is látható.
Most hozza létre az új Python -szkriptet ex08.py és írja be a következő kódsorokat a parancsfájlba.
tól tőlszelénimportwebmeghajtótól tőlszelén.webmeghajtó.gyakori.kulcsok importKulcsok
böngésző=webmeghajtó.Firefox(futtatható_útvonal='./drivers/geckodriver')
böngésző.kap('https://duckduckgo.com/')
searchInput=böngésző.find_element_by_id('search_form_input_homepage')
searchInput.send_keys('szelén hq'+ Kulcsok.BELÉP)
Ha elkészült, mentse a ex08.py Python szkript.
Itt, a browser.get () metódus betölti a DuckDuckGo keresőmotor honlapját a Firefox webböngészőben.
Az browser.find_element_by_id () metódus az azonosítójú bemeneti elemet választja ki search_form_input_homepage és tárolja a searchInput változó.
Az searchInput.send_keys () módszer a billentyűlenyomat adatok beviteli mezőbe történő elküldésére szolgál. Ebben a példában a karakterláncot küldi el szelén hq , és nyomja meg az Enter billentyűt a Kulcsok.ENTER állandó.
Amint a DuckDuckGo keresőmotor megkapja az Enter billentyűt, nyomja meg ( Kulcsok.ENTER ), megkeresi és megjeleníti az eredményt.
Futtassa a ex08.py Python -szkript, az alábbiak szerint:
$ python3 ex08.pyMint látható, a Firefox webböngészője felkereste a DuckDuckGo keresőmotort.
Automatikusan gépelt szelén hq a keresőmezőben.
Amint a böngésző megkapta az Enter billentyűt, nyomja meg ( Kulcsok.ENTER ), megjelenítette a keresési eredményt.
6. példa: Űrlap elküldése a W3Schools.com webhelyen
Az 5. példában a DuckDuckGo keresőmotor űrlapjának beküldése egyszerű volt. Csak az Enter billentyűt kellett megnyomnia. De ez nem lesz minden űrlapbeadvány esetében. Ebben a példában összetettebb űrlapkezelést mutatok be.
Először látogasson el a A W3Schools.com HTML Űrlapok oldala a Firefox webböngészőből. Miután az oldal betöltődött, látnia kell egy példa űrlapot. Ebben a példában ezt a formát küldjük be.
Ha megvizsgálja az űrlapot, a Keresztnév a beviteli mezőben szerepelnie kell az azonosítónak f név , az Vezetéknév a beviteli mezőben szerepelnie kell az azonosítónak lname , és a Küldés gomb rendelkeznie kell a típus Beküldés , amint az az alábbi képernyőképen is látható.
Az űrlap Selenium használatával történő elküldéséhez hozza létre az új Python -szkriptet ex09.py és írja be a következő kódsorokat a parancsfájlba.
tól tőlszelénimportwebmeghajtótól tőlszelén.webmeghajtó.gyakori.kulcsok importKulcsok
böngésző=webmeghajtó.Firefox(futtatható_útvonal='./drivers/geckodriver')
böngésző.kap('https://www.w3schools.com/html/html_forms.asp')
f név=böngésző.find_element_by_id('f név')
f név.egyértelmű()
f név.send_keys('Shahriar')
lname=böngésző.find_element_by_id('név')
lname.egyértelmű()
lname.send_keys('Shovon')
submittedButton=böngésző.find_element_by_css_selector('input [type =' submitted ']')
submittedButton.send_keys(Kulcsok.BELÉP)
Ha elkészült, mentse a ex09.py Python szkript.
Itt, a browser.get () metódus megnyitja a W3schools HTML űrlapok oldalát a Firefox webböngészőben.
Az browser.find_element_by_id () metódus az azonosító alapján megkeresi a beviteli mezőket f név és lname és tárolja őket a f név és lname változók, ill.
Az fname.clear () és lname.clear () módszerek törlik az alapértelmezett utónevet (János) f név érték és vezetéknév (Doe) lname értéket a beviteli mezőkből.
Az fname.send_keys () és lname.send_keys () módszerek típusa Shahriar és Shovon ban,-ben Keresztnév és Vezetéknév beviteli mezők, ill.
Az browser.find_element_by_css_selector () módszer kiválasztja a Küldés gomb az űrlapot, és tárolja a submittedButton változó.
Az submittedButton.send_keys () A módszer elküldi az Enter billentyűt ( Kulcsok.ENTER ) hoz Küldés gomb a nyomtatványból. Ez a művelet elküldi az űrlapot.
Futtassa a ex09.py Python -szkript, az alábbiak szerint:
$ python3 ex09.pyAmint láthatja, az űrlapot automatikusan elküldték a megfelelő adatokkal.
Következtetés
Ez a cikk segítséget nyújt a Selenium böngésző tesztelésében, a web automatizálásában és a webes selejtező könyvtárak használatában a Python 3 -ban. További információért olvassa el a hivatalos Selenium Python dokumentáció .