Ez a cikk bemutatja, hogyan állíthatja be a Selenium Linux disztribúcióján (i.e., Ubuntu), valamint az alapvető web-automatizálás és webes selejtezés végrehajtásának módja a Selenium Python 3 könyvtárral.
Előfeltételek
A cikkben használt parancsok és példák kipróbálásához a következőkre van szükség:
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 számítógépre telepített Google Chrome vagy Firefox böngésző.
Számos cikk található ezekről a témákról a LinuxHint oldalon.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 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 pedig globálisan.
A Python 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
A 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 projekt könyvtárat python-selenium-basic / a jelenlegi munkakönyvtárban az alábbiak szerint:
$ mkdir -pv python-selenium-basic / meghajtók
Navigáljon az újonnan létrehozott projektkönyvtárhoz python-selenium-basic /, alábbiak szerint:
$ cd python-selenium-basic /
Hozzon létre egy Python virtuális környezetet a projektkönyvtárában a következő paranccsal:
$ virtualenv .env
A Python virtuális környezetet most létre kell hoznia a projekt könyvtárában."
Aktiválja a Python virtuális környezetet a projektkönyvtárban a következő paranccsal:
$ forrás .env / bin / activ
Amint láthatja, a Python virtuális környezet aktiválva van ehhez a projektkönyvtárhoz.
A Selenium Python könyvtár telepítése
A Selenium Python könyvtár a hivatalos Python PyPI adattárban érhető el.
Ezt a könyvtárat a PIP 3 segítségével telepítheti az alábbiak szerint:
$ pip3 telepítse a szelént
A 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 meg kell tennie: telepítenie kell egy webes illesztőprogramot a kedvenc webböngészőjéhez. Ebben a cikkben megmutatom, hogyan kell telepíteni a Selenium Firefox és Chrome webes illesztőprogramjait.
A Firefox Gecko illesztőprogram telepítése
A Firefox Gecko illesztőprogram lehetővé teszi a Firefox böngésző vezérlését vagy automatizálását a Selenium használatával.
A Firefox Gecko illesztőprogram letöltéséhez látogasson el a mozilla / geckodriver GitHub kiadási oldalára egy webböngészőből.
Mint láthatja, v0.26.A 0 a Firefox Gecko illesztőprogram legújabb verziója a cikk írásakor.
A Firefox Gecko illesztőprogram letöltéséhez görgessen kissé lefelé, és kattintson a Linux geckodriver tar-ra.gz archívum, 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.kátrány.gz link.
Ha 64 bites operációs rendszert használ, kattintson a gombra geckodriver-v0.26.0-linuxx64.kátrány.gz link.
Esetemben letöltöm a Firefox Gecko illesztőprogram 64 bites verzióját.
Böngészője kéri, hogy mentse az archívumot. 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.kátrány.gz archívum a ~ / Letöltések könyvtárba a járművezetők / a következő könyvtár beírásával:
$ tar -xzf ~ / Letöltések / geckodriver-v0.26.0-linux64.kátrány.gz -C illesztőprogramok /
Miután kibontotta a Firefox Gecko Driver archívumát, új geckodriver bináris fájlt kell létrehozni a járművezetők / a projekt könyvtárát, amint az az alábbi képernyőképen látható.
A Selenium Firefox Gecko illesztőprogram tesztelése
Ebben a részben bemutatom, hogyan állíthatja be az első Selenium Python parancsfájlt annak tesztelésére, hogy a Firefox Gecko illesztőprogram működik-e.
Először nyissa meg a projekt könyvtárat python-selenium-basic / kedvenc IDE-jével vagy szerkesztőjével. Ebben a cikkben a Visual Studio kódot fogom használni.
Hozza létre az új Python szkriptet ex01.py, és írja be a következő sorokat a szkriptbe.
a szelénimport-meghajtórólszelénből.web meghajtó.gyakori.kulcsok importálása kulcsok
az időből importál
böngésző = webdriver.Firefox (végrehajtható_útvonal = "./ drivers / geckodriver ")
böngésző.get ('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 egy későbbi szakaszában ismertetem.
A következő sor úgy konfigurálja a Seleniumot, hogy a Firefox Gecko illesztőprogramot használja a járművezetők / a projekt könyvtárát.
Futtassa a következőket annak teszteléséhez, hogy a Firefox Gecko illesztőprogram működik-e a Seleniummal ex01.py Python szkript:
$ python3 ex01.py
A Firefox böngészőnek automatikusan meg kell látogatnia a Google-t.com és 5 másodperc múlva bezárkózik. Ha ez bekövetkezik, akkor a Selenium Firefox Gecko illesztőprogram megfelelően működik.
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 Selenium használatával.
Töltse le a Chrome webillesztő programjának ugyanazt a verzióját, mint a Google Chrome böngészője.
A Google Chrome böngésző verziószámának megkereséséhez keresse fel a chrome: // settings / help oldalt a Google Chrome böngészőben. A verziószámnak a A Chrome-ról szakaszban látható, ahogy az alábbi képernyőképen is láthatja.
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 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ő lesz a Google Web Driver a Google Chrome böngésző legfrissebb kiadásaihoz, amint az az alábbi képernyőképen látható.
Ha a Google Chrome által használt verziója nincs a Jelenlegi kiadások részben görgessen egy kicsit lefelé, és megtalálja a kívánt verziót.
Miután rákattintott a megfelelő Chrome webillesztő-verzióra, az a következő oldalra vezet. Kattintson a chromedriver_linux64.postai irányítószám link, ahogy az az alábbi képernyőképen szerepel.
Most le kell töltenie a Chrome Web Driver archívumot.
A Chrome Web Driver archívumát most le kell töltenie a ~ / Letöltések Könyvtár.
Kivonhatja 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 a következő paranccsal:
$ unzip ~ / Letöltések / chromedriver_linux64.zip -d illesztőprogramok /
Miután kibontotta a Chrome Web Driver archívumát, új chromedriver bináris fájlt kell létrehozni a járművezetők / a projekt könyvtárát, amint az az alábbi képernyőképen látható.
A Selenium Chrome internetes illesztőprogram tesztelése
Ebben a részben bemutatom, hogyan állíthatja be az első Selenium Python szkriptet annak tesztelésére, hogy a Chrome webillesztőprogram működik-e.
Először hozza létre az új Python szkriptet ex02.py, és írja be a következő kódsorokat a szkriptbe.
a szelénimport-meghajtórólszelénből.web meghajtó.gyakori.kulcsok importálása kulcsok
az időből importál
böngésző = webdriver.Chrome (végrehajtható_útvonal = "./ driverek / chromedriver ")
böngésző.get ('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 egy későbbi szakaszában ismertetem.
A következő sor úgy konfigurálja a Seleniumot, hogy használja a Chrome webillesztő programot járművezetők / a projekt könyvtárát.
Futtassa a ex02.py Python szkript, az alábbiak szerint:
$ python3 ex01.py
A Google Chrome böngészőnek automatikusan meg kell látogatnia a Google-t.com és 5 másodperc múlva bezárkózik. Ha ez bekövetkezik, akkor a Selenium Firefox Gecko illesztőprogram megfelelően működik.
A szelén web-kaparásának alapjai
Mostantól a Firefox böngészőt fogom használni. Használhatja a Chrome-ot is, ha szeretné.
Az alap 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 web meghajtó tól szelén modul.
Ezután importálja a Kulcsok tól től szelén.web meghajtó.gyakori.kulcsok. Ez segít elküldeni a billentyűzet gombnyomásait a Seleniumból automatizált böngészőbe.
A következő sor létrehozza a böngésző objektum a Firefox bö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.
Webhely vagy URL betöltése (feltöltöm a webhelyet: https: // www.kacsa.com), hívja a kap() módszere böngésző objektumot a Firefox böngészőben.
A Selenium segítségével megírhatja tesztjeit, elvégezheti az internetes selejtezést, végül pedig bezárhatja a böngészőt a Kilépés() módszere böngésző tárgy.
A fenti a Selenium Python szkript alapelrendezése. Ezeket a sorokat az összes Selenium Python szkriptjébe írja.
1. példa: Weboldal címének kinyomtatása
Ez lesz a legegyszerűbb példa, amelyet a szelén alkalmazásával tárgyaltunk. Ebben a példában kinyomtatjuk a meglátogatni kívánt weboldal címét.
Hozza létre az új fájlt ex04.py és írja be a következő kódsorokat.
a szelénimport-meghajtórólszelénből.web meghajtó.gyakori.kulcsok importálása kulcsok
böngésző = webdriver.Firefox (végrehajtható_útvonal = "./ drivers / geckodriver ")
böngésző.get ('https: // www.kacsa.com ')
print ("Cím:% s"% böngésző.cím)
böngésző.Kilépés()
Ha végzett, mentse a fájlt.
Itt a böngésző.cím a meglátogatott weboldal címének és a nyomtatás() függvény segítségével a cím kinyomtatható a konzolon.
Miután a ex04.py szkript, akkor:
1) Nyissa meg a Firefoxot
2) Töltse be a kívánt weboldalt
3) Hívja le az oldal címét
4) Nyomtassa ki a címet a konzolra
5) És végül zárja be a böngészőt
Mint láthatja, a ex04.py A script szépen kinyomtatta a weboldal címét a konzolon.
$ python3 ex04.py
2. példa: Több weboldal címének kinyomtatá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 hurok segítségével.
Ennek megértéséhez hozza létre az új Python szkriptet ex05.py és írja be a következő kódsorokat a parancsfájlba:
a szelénimport-meghajtórólszelénből.web meghajtó.gyakori.kulcsok importálása kulcsok
böngésző = webdriver.Firefox (végrehajtható_útvonal = "./ drivers / geckodriver ")
URL = ['https: // www.kacsa.com ',' https: // linuxhint.com ',' https: // yahoo.com ']
az URL-hez az URL-ben:
böngésző.get (url)
print ("Cím:% s"% böngésző.cím)
böngésző.Kilépés()
Ha elkészült, mentse a Python szkriptet ex05.py.
Itt a URL-ek list tartalmazza az egyes weboldalak URL-jét.
A mert ciklust használjuk a URL-ek listaelemeket.
A szelén minden iterációnál azt mondja a böngészőnek, hogy látogassa meg a url és megkapja a weboldal címét. Miután a Selenium kinyerte a weboldal címét, a konzol kinyomtatja.
Futtassa a Python szkriptet ex05.py, és látnia kell az egyes weboldalak címét a URL-ek lista.
$ python3 ex05.py
Ez egy példa arra, hogy a Selenium hogyan végezheti el ugyanazt a feladatot több weboldallal vagy webhellyel.
3. példa: Adatok kinyerése egy weboldalról
Ebben a példában bemutatom az alapokat az adatok weboldalakról történő kivonására a Selenium használatával. Ez más néven webes kaparás.
Először keresse fel a Randomot.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 Selenium segítségével történő kinyeréséhez ismernie kell az adatok HTML-ábrázolását is.
Annak megtekintéséhez, hogy a véletlenszerű karakterlánc-adatok hogyan jelennek meg a HTML-ben, válassza ki a véletlenszerű karakterlánc-adatokat, nyomja meg az egér jobb gombját (RMB), majd kattintson a Ellenőrizze az elemet (Q), ahogy az az alábbi képernyőképen szerepel.
Az adatok HTML reprezentációját meg kell jeleníteni a Ellenőr fülre, amint az az alábbi képernyőképen látható.
Kattintson a gombra is Ellenőrzés ikon ( ) hogy ellenőrizze az oldalról származó adatokat.
Kattintson az ellenőrzés ikonra (), és vigye az egérmutatót a kivonni kívánt véletlenszerű karakterlánc-adatok fölé. Az adatok HTML-ábrázolását a korábbiak szerint kell megjeleníteni.
Mint látható, a véletlenszerű karakterláncadatok HTML-be vannak csomagolva elő tag, és tartalmazza az osztályt adat.
Most, hogy ismerjük a kinyerni kívánt adatok HTML reprezentációját, létrehozunk egy Python szkriptet, amely az adatokat a Selenium használatával vonja ki.
Hozza létre az új Python szkriptet ex06.py és írja be a következő kódsorokat a szkriptbe
a szelénimport-meghajtórólszelénből.web meghajtó.gyakori.kulcsok importálása kulcsok
böngésző = webdriver.Firefox (végrehajtható_útvonal = "./ drivers / geckodriver ")
böngésző.get ("https: // www.véletlen.org / húrok /?num = 1 & len = 20 & számjegy
= on & upperalpha = on & loweralpha = on & unique = on & format = html & rnd = new ")
dataElement = böngésző.find_element_by_css_selector ('előtag.adat')
nyomtatás (dataElement.szöveg)
böngésző.Kilépés()
Ha elkészült, mentse a ex06.py Python szkript.
Itt a böngésző.kap() metódus betölti a weboldalt a Firefox böngészőbe.
A böngésző.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 elő.adat, a elő címke, amelynek az osztály neve van adat.
Valami alatt elő.adat elemet a dataElement változó.
Ezután a szkript kinyomtatja a kijelölt szöveges tartalmát elő.adat elem.
Ha futtatja a ex06.py Python szkript, ki kell vonnia a véletlenszerű karakterláncadatokat a weboldalról, amint az az alábbi képernyőképen látható.
$ python3 ex06.py
Mint láthatja, minden egyes alkalommal, amikor lefuttatom a ex06.py Python szkript, más véletlenszerű 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 bemutatta, hogyan lehet egyetlen adatelemet kinyerni egy weboldalról a Selenium segítségével. Ebben a példában megmutatom, hogyan lehet a Selenium segítségével kinyerni az adatok listáját egy weboldalról.
Először keresse fel a véletlenszerű név-generátort.információkat a Firefox böngészőjéből. Ez a webhely tíz 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 segítségével nyerjük ki.
Ha jobban megvizsgálja a névlistát, láthatja, hogy ez egy rendezett lista (ol címke). A ol tag tartalmazza az osztály nevét is névlista. A véletlenszerű nevek mindegyike listaelemként jelenik meg (li tag) a ol címke.
E véletlen nevek kibontásához hozza létre az új Python szkriptet ex07.py és írja be a következő kódsorokat a szkriptbe.
a szelénimport-meghajtórólszelénből.web meghajtó.gyakori.kulcsok importálása kulcsok
böngésző = webdriver.Firefox (végrehajtható_útvonal = "./ drivers / geckodriver ")
böngésző.get ("http: // random-name-generator.info / ")
nameList = böngésző.find_elements_by_css_selector ('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 ex07.py Python szkript.
Itt a böngésző.kap() metódus betölti a véletlenszerű névgenerátor weboldalát a Firefox böngészőbe.
A böngésző.find_elements_by_css_selector () metódus a CSS választót használja ol.névLista li hogy megtalálja mindet li elemek a ol az osztály nevét tartalmazó címke névlista. Az összes kijelöltet tároltam li elemei a névlista változó.
A mert ciklust használjuk a névlista listája li elemek. Minden iterációban a li elem a konzolra van nyomtatva.
Ha futtatja a ex07.py Python szkript, az összes véletlenszerű nevet lekéri a weboldalról, és kinyomtatja a képernyőn, ahogy az alábbi képernyőképen láthatja.
$ python3 ex07.py
Ha másodszor futtatja a szkriptet, akkor a véletlenszerű felhasználói nevek új listáját adja vissza, amint az az alábbi képernyőképen látható.
5. példa: Űrlap bekü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 felhasználásával.
Először látogassa meg a DuckDuckGo keresőmotort a Firefox böngészőből.
Ha megvizsgálja a keresési beviteli mezőt, annak azonosítóval kell rendelkeznie search_form_input_homepage, ahogy az alábbi képernyőképen láthatja.
Most hozza létre az új Python szkriptet ex08.py és írja be a következő kódsorokat a szkriptbe.
a szelénimport-meghajtórólszelénből.web meghajtó.gyakori.kulcsok importálása kulcsok
böngésző = webdriver.Firefox (végrehajtható_útvonal = "./ drivers / geckodriver ")
böngésző.get ("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 böngésző.kap() A módszer a DuckDuckGo keresőmotorjának kezdőlapját tölti be a Firefox böngészőbe.
A böngésző.find_element_by_id () metódus kiválasztja a bemeneti elemet az azonosítóval search_form_input_homepage és tárolja a searchInput változó.
A searchInput.send_keys () metódust használnak a gombnyomásra vonatkozó adatok elküldésére a beviteli mezőbe. Ebben a példában elküldi a karakterláncot szelén hq, és megnyomja az Enter billentyűt a Kulcsok.BELÉP állandó.
Amint a DuckDuckGo kereső megkapja az Enter billentyűt, nyomja meg azKulcsok.BELÉP), megkeresi és megjeleníti az eredményt.
Futtassa a ex08.py Python szkript, az alábbiak szerint:
$ python3 ex08.py
Mint látható, a Firefox böngésző felkereste a DuckDuckGo keresőt.
Automatikusan beírta szelén hq a keresőmezőben.
Amint a böngésző megkapta az Enter billentyűt, nyomja meg aKulcsok.BELÉP), megjelenítette a keresési eredményt.
6. példa: Űrlap beküldése W3Schools-on.com
Az 5. példában a DuckDuckGo keresőmotor-űrlap benyújtása egyszerű volt. Csak annyit kellett tennie, hogy megnyomta az Enter billentyűt. De ez nem minden formanyomtatvány esetében lesz így. Ebben a példában összetettebb űrlapkezelést mutatok be.
Először keresse fel a W3Schools HTML Forms oldalát.com a Firefox böngészőből. Amint az oldal betöltődik, látnia kell egy példa űrlapot. Ezt az űrlapot nyújtjuk be ebben a példában.
Ha megvizsgálja az űrlapot, a Keresztnév a beviteli mezőnek meg kell adnia az azonosítót fname, a Vezetéknév a beviteli mezőnek meg kell adnia az azonosítót lname, és a Küldés gomb kell a típus Beküldés, ahogy az alábbi képernyőképen láthatja.
Az űrlap Selenium használatával történő elküldéséhez hozza létre az új Python parancsfájlt ex09.py és írja be a következő kódsorokat a szkriptbe.
a szelénimport-meghajtórólszelénből.web meghajtó.gyakori.kulcsok importálása kulcsok
böngésző = webdriver.Firefox (végrehajtható_útvonal = "./ drivers / geckodriver ")
böngésző.get ("https: // www.w3iskolák.com / html / html_forms.áspiskígyó")
fname = böngésző.find_element_by_id ('fname')
fname.egyértelmű()
fname.send_keys ('sahriar')
lname = böngésző.find_element_by_id ('lname')
lname.egyértelmű()
lname.send_keys ('Shovon')
submitButton = böngésző.find_element_by_css_selector ('input [type = "submit"]')
submitButton.send_keys (Kulcsok.BELÉP)
Ha elkészült, mentse a ex09.py Python szkript.
Itt a böngésző.kap() módszer megnyitja a W3schools HTML űrlapok oldalt a Firefox böngészőben.
A böngésző.find_element_by_id () metódus az id alapján megkeresi a beviteli mezőket fname és lname és tárolja őket a fname és lname változók, ill.
A fname.egyértelmű() és lname.egyértelmű() módszerek törlik az alapértelmezett keresztnevet (John) fname érték és vezetéknév (Doe) lname érték a beviteli mezőkből.
A fname.send_keys () és lname.send_keys () módszerek típusa Sahriar és Shovon ban,-ben Keresztnév és Vezetéknév beviteli mezők, ill.
A böngésző.find_element_by_css_selector () módszer kiválasztja a Küldés gomb formában, és az submitButton változó.
A submitButton.send_keys () metódus elküldi az Enter billentyűt (Kulcsok.BELÉP) hoz Küldés gomb a forma. Ez a művelet benyújtja az űrlapot.
Futtassa a ex09.py Python szkript, az alábbiak szerint:
$ python3 ex09.py
Amint láthatja, az űrlapot automatikusan beküldték a megfelelő bemenetekkel.
Következtetés
Ez a cikk elősegíti a Selenium böngésző tesztelésének, a web-automatizálás és a webes selejtezési könyvtárak használatának megkezdését a Python 3-ban. További információkért tekintse meg a hivatalos Selenium Python dokumentációt.