Úvod do selénu v Pythone 3

Introduction Selenium Python 3



Selén je rámec používaný na testovanie webových aplikácií. Selenium automatizuje prehliadač, ako je Chrome alebo Firefox, aby vykonával testy na vami požadovaných webových stránkach. Selén je tiež veľmi účinný nástroj na škrabanie webu. Selenium podporuje JavaScript a všetky moderné funkcie prehliadača. Tento nástroj je veľmi účinný pri získavaní informácií z webových stránok.

Tento článok vám ukáže, ako nastaviť Selenium vo vašej distribúcii Linuxu (tj. Ubuntu), a tiež ako vykonať základnú automatizáciu webu a zošrotovanie webu pomocou knižnice Selenium Python 3.







Predpoklady

Na vyskúšanie príkazov a príkladov použitých v tomto článku musíte mať nasledujúce:



1) Vo vašom počítači je nainštalovaná distribúcia Linuxu (najlepšie Ubuntu).
2) Vo vašom počítači je nainštalovaný Python 3.
3) PIP 3 nainštalovaný vo vašom počítači.
4) Na vašom počítači je nainštalovaný webový prehliadač Google Chrome alebo Firefox.



Mnoho článkov na tieto témy nájdete na LinuxHint.com . Ak potrebujete ďalšiu pomoc, prečítajte si tieto články.





Príprava virtuálneho prostredia Python 3 na projekt

Virtuálne prostredie Python sa používa na vytvorenie izolovaného adresára projektu Python. Moduly Python, ktoré inštalujete pomocou PIP, budú nainštalované iba do adresára projektu, nie globálne.

Python virtualenv modul sa používa na správu virtuálnych prostredí Python.



Môžete si nainštalovať Python virtualenv modul globálne pomocou PIP 3, a to nasledovne:

$ sudo pip3 install virtualenv

PIP3 stiahne a globálne nainštaluje všetky požadované moduly.

V tomto mieste Python virtualenv modul by mal byť nainštalovaný globálne.

Vytvorte adresár projektu python-selén-basic/ vo vašom aktuálnom pracovnom adresári nasledovne:

$ mkdir -pv python-selén-základné/ovládače

Prejdite do novovytvoreného adresára projektu python-selén-basic/ , nasledovne:

$CDpython-selén-basic/

Vytvorte virtuálne prostredie Python v adresári projektu pomocou nasledujúceho príkazu:

$ virtualenv.env

Teraz by ste vo svojom adresári projektu mali vytvoriť virtuálne prostredie Python. '

Aktivujte virtuálne prostredie Python v adresári projektu pomocou nasledujúceho príkazu:

$ zdroj.env/bin/aktivovať

Ako vidíte, pre tento adresár projektu je aktivované virtuálne prostredie Python.

Inštalácia knižnice Selenium Python

Knižnica Selenium Python je k dispozícii v oficiálnom úložisku Python PyPI.

Túto knižnicu môžete nainštalovať pomocou PIP 3 nasledovne:

$ pip3 nainštalujte selén

Teraz by mala byť nainštalovaná knižnica Selenium Python.

Teraz, keď je nainštalovaná knižnica Selenium Python, ďalšia vec, ktorú musíte urobiť, je nainštalovať webový ovládač pre váš obľúbený webový prehliadač. V tomto článku vám ukážem, ako nainštalovať webové ovládače Firefox a Chrome pre Selenium.

Inštalácia ovládača Firefox Gecko

Ovládač Firefox Gecko vám umožňuje ovládať alebo automatizovať webový prehliadač Firefox pomocou selénu.

Ak si chcete stiahnuť ovládač Firefox Gecko, navštívte stránku GitHub vydáva stránku mozilla/geckodriver z webového prehliadača.

Ako vidíte, v0.26.0 je najnovšou verziou ovládača Firefox Gecko v čase písania tohto článku.

Ak si chcete stiahnuť ovládač Firefox Gecko, trochu sa posuňte nadol a kliknite na archív Linux geckodriver tar.gz, v závislosti od architektúry vášho operačného systému.

Ak používate 32-bitový operačný systém, kliknite na geckodriver-v0.26.0-linux32.tar.gz odkaz.

Ak používate 64-bitový operačný systém, kliknite na ikonu geckodriver-v0.26.0-linuxx64.tar.gz odkaz.

V mojom prípade si stiahnem 64-bitovú verziu ovládača Firefox Gecko.

Váš prehliadač by vás mal vyzvať na uloženie archívu. Vyberte Uloženie súboru a potom kliknite na OK .

Archív ovládača Firefox Gecko by ste si mali stiahnuť v ~/Stiahnutia adresár.

Extrahujte súbor geckodriver-v0.26.0-linux64.tar.gz archív z ~/Stiahnutia adresár do vodiči/ adresár vášho projektu zadaním nasledujúceho príkazu:

$decht -xzf~/K stiahnutiu/geckodriver-v0.26.0-linux64.tar.gz-Cvodiči/

Akonáhle je archív ovládača Firefox Gecko rozbalený, nový vodič gekona binárny súbor by mal byť vytvorený v súbore vodiči/ adresár vášho projektu, ako môžete vidieť na obrázku nižšie.

Testovanie ovládača Gecko Selenium Firefox

V tejto časti vám ukážem, ako nastaviť svoj úplne prvý skript Selenium Python, aby ste otestovali, či funguje ovládač Firefox Gecko.

Najprv otvorte adresár projektu python-selén-basic/ s vašim obľúbeným IDE alebo editorom. V tomto článku použijem kód Visual Studio.

Vytvorte nový skript Python ex01.py , a do skriptu napíšte nasledujúce riadky.

odselénimportwebdriver
odselén.webdriver.spoločný.kľúče importKľúče
od čas importspať
prehliadač=webdriver.Firefox(spustiteľná_cesta='./drivers/geckodriver')
prehliadač.dostať(„http://www.google.com“)
spať(5)
prehliadač.skončiť()

Keď skončíte, uložte súbor ex01.py Skript Python.

Kód vysvetlím v neskoršej časti tohto článku.

Nasledujúci riadok konfiguruje Selenium na používanie ovládača Firefox Gecko z vodiči/ adresár vášho projektu.

Ak chcete otestovať, či ovládač Firefox Gecko funguje so systémom Selenium, spustite nasledujúci postup ex01.py Skript Python:

$ python3 ex01.py

Webový prehliadač Firefox by mal automaticky navštíviť stránku Google.com a po 5 sekundách sa sám zavrieť. Ak k tomu dôjde, ovládač Selenium Firefox Gecko funguje správne.

Inštalácia webového ovládača Chrome

Webový ovládač Chrome vám umožňuje ovládať alebo automatizovať webový prehliadač Google Chrome pomocou selénu.

Musíte si stiahnuť rovnakú verziu webového ovládača Chrome, ako je webový prehliadač Google Chrome.

Ak chcete zistiť číslo verzie svojho webového prehliadača Google Chrome, navštívte stránku chrome: // nastavenia/pomoc v prehliadači Google Chrome. Číslo verzie by malo byť v súbore O prehliadači Chrome sekcii, ako môžete vidieť na obrázku nižšie.

V mojom prípade je číslo verzie 83.0.4103.116 . Prvé tri časti čísla verzie ( 83,0,4103 , v mojom prípade) sa musí zhodovať s prvými troma časťami čísla verzie webového ovládača Chrome.

Ak si chcete stiahnuť webový ovládač Chrome, navštívte stránku oficiálna stránka na stiahnutie ovládača Chrome .

V Aktuálne vydania sekcii, bude k dispozícii webový ovládač Chrome pre najaktuálnejšie vydania webového prehliadača Google Chrome, ako vidíte na obrázku nižšie.

Ak verzia prehliadača Google Chrome, ktorú používate, nie je vo formáte Aktuálne vydania sekcii trochu posuňte zobrazenie nadol a mali by ste nájsť požadovanú verziu.

Po kliknutí na správnu verziu ovládača Chrome Web Driver by vás malo prejsť na nasledujúcu stránku. Klikni na chromedriver_linux64.zip odkaz, ako je uvedené na obrázku nižšie.

Teraz by ste si mali stiahnuť archív ovládača Chrome Web.

Archív webového ovládača Chrome by ste si teraz mali stiahnuť v ~/Stiahnutia adresár.

Môžete extrahovať súbor chromedriver-linux64.zip archív z ~/Stiahnutia adresár do vodiči/ adresár vášho projektu s nasledujúcim príkazom:

$ rozbaliť~/Stiahnutie/chromedriver_linux64.PSČ-d vodiči/

Po extrahovaní archívu webového ovládača Chrome nový chromedriver binárny súbor by mal byť vytvorený v súbore vodiči/ adresár vášho projektu, ako môžete vidieť na obrázku nižšie.

Testovanie webového ovládača Selenium Chrome

V tejto časti vám ukážem, ako nastaviť svoj úplne prvý skript Selenium Python na otestovanie funkčnosti webového ovládača Chrome.

Najprv vytvorte nový skript Python ex02.py , a do skriptu zadajte nasledujúce riadky kódov.

odselénimportwebdriver
odselén.webdriver.spoločný.kľúče importKľúče
od čas importspať
prehliadač=webdriver.Chrome(spustiteľná_cesta=„./drivers/chromedriver“)
prehliadač.dostať(„http://www.google.com“)
spať(5)
prehliadač.skončiť()

Keď skončíte, uložte súbor ex02.py Skript Python.

Kód vysvetlím v neskoršej časti tohto článku.

Nasledujúci riadok konfiguruje Selenium na používanie webového ovládača Chrome z vodiči/ adresár vášho projektu.

Ak chcete otestovať, či Chrome Web Driver funguje so systémom Selenium, spustite súbor ex02.py Skript Python takto:

$ python3 ex01.py

Webový prehliadač Google Chrome by mal automaticky navštíviť stránku Google.com a po 5 sekundách sa sám zavrieť. Ak k tomu dôjde, ovládač Selenium Firefox Gecko funguje správne.

Základy zoškrabovania webu selénom

Odteraz budem používať webový prehliadač Firefox. Ak chcete, môžete použiť aj prehliadač Chrome.

Základný skript Selenium Python by mal vyzerať ako skript zobrazený na obrázku nižšie.

Najprv importujte selén webdriver z selén modul.

Ďalej importujte súbor Kľúče od selén.webdriver.bežné.kľúče . Pomôže vám to odoslať stlačenia klávesu klávesnice do prehliadača, ktorý automatizujete, zo Selenu.

Nasledujúci riadok vytvára a prehliadač objekt pre webový prehliadač Firefox pomocou ovládača Firefox Gecko (Webdriver). Pomocou tohto objektu môžete ovládať akcie prehliadača Firefox.

Načítanie webovej stránky alebo adresy URL (načítam webovú stránku https://www.duckduckgo.com ), zavolajte na dostať () metóda prehliadač namietajte vo svojom prehliadači Firefox.

Pomocou selénu môžete písať svoje testy, vykonávať zošrotovanie webu a nakoniec zatvoriť prehliadač pomocou súboru skončiť () metóda prehliadač predmet.

Hore je základné rozloženie skriptu Selenium Python. Tieto riadky budete písať vo všetkých svojich skriptoch Selenium Python.

Príklad 1: Vytlačenie názvu webovej stránky

Toto bude najľahší príklad diskutovaný pomocou selénu. V tomto prípade vytlačíme názov webovej stránky, ktorú navštívime.

Vytvorte nový súbor ex04.py a zadajte doň nasledujúce riadky kódov.

odselénimportwebdriver
odselén.webdriver.spoločný.kľúče importKľúče

prehliadač=webdriver.Firefox(spustiteľná_cesta='./drivers/geckodriver')

prehliadač.dostať(„https://www.duckduckgo.com“)
vytlačiť(„Názov: %s“% prehliadač.titul)
prehliadač.skončiť()

Po dokončení uložte súbor.

Tu, prehliadač.názov sa používa na prístup k názvu navštívenej webovej stránky a vytlačiť () Táto funkcia bude použitá na vytlačenie názvu v konzole.

Po spustení súboru ex04.py skript, mal by:

1) Otvorte Firefox
2) Načítajte požadovanú webovú stránku
3) Získajte názov stránky
4) Vytlačte názov na konzolu
5) Nakoniec zatvorte prehliadač

Ako vidíte, ex04.py skript pekne vytlačil názov webovej stránky v konzole.

$ python3 ex04.py

Príklad 2: Tlač názvov viacerých webových stránok

Rovnako ako v predchádzajúcom príklade môžete použiť rovnakú metódu na vytlačenie názvu viacerých webových stránok pomocou slučky Python.

Aby ste pochopili, ako to funguje, vytvorte nový skript Python ex05.py a do skriptu zadajte nasledujúce riadky kódu:

odselénimportwebdriver
odselén.webdriver.spoločný.kľúče importKľúče

prehliadač=webdriver.Firefox(spustiteľná_cesta='./drivers/geckodriver')


adresy URL= [„https://www.duckduckgo.com“, 'https://linuxhint.com', „https://yahoo.com“]
preurlvadresy URL:
prehliadač.dostať(url)
vytlačiť(„Názov: %s“% prehliadač.titul)
prehliadač.skončiť()

Akonáhle budete hotoví, uložte skript Python ex05.py .

Tu, adresy URL list uchováva adresu URL každej webovej stránky.

TO pre slučka sa používa na iteráciu cez adresy URL položky zoznamu.

Pri každej iterácii Selenium oznámi prehliadaču, aby navštívil súbor url a získajte názov webovej stránky. Keď Selenium extrahuje názov webovej stránky, vytlačí sa v konzole.

Spustite skript Python ex05.py , a názov každej webovej stránky by ste mali vidieť v priečinku adresy URL zoznam.

$ python3 ex05.py

Je to príklad toho, ako môže Selenium vykonávať rovnakú úlohu s viacerými webovými stránkami alebo webovými stránkami.

Príklad 3: Extrahovanie údajov z webovej stránky

V tomto prípade vám ukážem základy extrakcie údajov z webových stránok pomocou selénu. Toto je tiež známe ako zoškrabovanie webu.

Najprv navštívte Random.org odkaz z Firefoxu. Stránka by mala vygenerovať náhodný reťazec, ako môžete vidieť na obrázku nižšie.

Ak chcete extrahovať údaje náhodných reťazcov pomocou selénu, musíte poznať aj HTML reprezentáciu údajov.

Ak chcete zistiť, ako sú údaje náhodných reťazcov reprezentované v HTML, vyberte údaje náhodných reťazcov a stlačte pravé tlačidlo myši (RMB) a kliknite na Skontrolovať prvok (Q) , ako je uvedené na obrázku nižšie.

HTML reprezentácia údajov by mala byť zobrazená v Inšpektor kartu, ako vidíte na obrázku nižšie.

Môžete tiež kliknúť na Ikona kontroly ( ) na kontrolu údajov zo stránky.

Kliknite na ikonu kontroly () a umiestnite kurzor myši na údaje náhodných reťazcov, ktoré chcete extrahovať. HTML reprezentácia údajov by mala byť zobrazená ako predtým.

Ako vidíte, údaje náhodných reťazcov sú zabalené v HTML pre tag a obsahuje triedu údaje .

Teraz, keď poznáme HTML reprezentáciu údajov, ktoré chceme extrahovať, vytvoríme skript Python na extrahovanie údajov pomocou selénu.

Vytvorte nový skript Python ex06.py a do skriptu napíšte nasledujúce riadky kódov

odselénimportwebdriver
odselén.webdriver.spoločný.kľúče importKľúče

prehliadač=webdriver.Firefox(spustiteľná_cesta='./drivers/geckodriver')

prehliadač.dostať(„https://www.random.org/strings/?num=1&len=20&digits
= on & upperalpha = on & loweralpha = on & unique = on & format = html & rnd = new '
)

dataElement=prehliadač.find_element_by_css_selector('pre.data')
vytlačiť(dataElement.text)
prehliadač.skončiť()

Keď skončíte, uložte súbor ex06.py Skript Python.

Tu, browser.get () metóda načíta webovú stránku v prehliadači Firefox.

The browser.find_element_by_css_selector () metóda vyhľadá v HTML kóde stránky konkrétny prvok a vráti ho.

V tomto prípade by prvok bol pre.data , pre značka s názvom triedy údaje .

Nižšie pre.data prvok bol uložený v priečinku dataElement premenná.

Skript potom vytlačí textový obsah vybratého pre.data element.

Ak spustíte ex06.py Skript Python, mal by extrahovať údaje náhodných reťazcov z webovej stránky, ako vidíte na obrázku nižšie.

$ python3 ex06.py

Ako vidíte, zakaždým, keď spustím ex06.py Skript Python extrahuje z webovej stránky rôzne údaje náhodných reťazcov.

Príklad 4: Extrahovanie zoznamu údajov z webovej stránky

Predchádzajúci príklad vám ukázal, ako extrahovať jeden údajový prvok z webovej stránky pomocou selénu. V tomto prípade vám ukážem, ako použiť Selén na extrahovanie zoznamu údajov z webovej stránky.

Najprv navštívte random-name-generator.info z webového prehliadača Firefox. Tento web vygeneruje desať náhodných mien pri každom opätovnom načítaní stránky, ako vidíte na obrázku nižšie. Našim cieľom je extrahovať tieto náhodné názvy pomocou selénu.

Ak sa podrobnejšie pozriete na zoznam mien, uvidíte, že ide o usporiadaný zoznam ( zomrieť značka). The zomrieť tag tiež obsahuje názov triedy zoznam mien . Každý z náhodných mien je reprezentovaný ako položka zoznamu ( na tag) vo vnútri zomrieť tag.

Ak chcete extrahovať tieto náhodné názvy, vytvorte nový skript Python ex07.py a do skriptu napíšte nasledujúce riadky kódov.

odselénimportwebdriver
odselén.webdriver.spoločný.kľúče importKľúče

prehliadač=webdriver.Firefox(spustiteľná_cesta='./drivers/geckodriver')

prehliadač.dostať('http://random-name-generator.info/')

zoznam mien=prehliadač.find_elements_by_css_selector('ol.nameList li')

prenázovvzoznam mien:
vytlačiť(názov.text)

prehliadač.skončiť()

Keď skončíte, uložte súbor ex07.py Skript Python.

Tu, browser.get () metóda načíta webovú stránku generátora náhodných mien v prehliadači Firefox.

The browser.find_elements_by_css_selector () metóda používa selektor CSS ol.nameList li nájsť všetko na prvky vo vnútri zomrieť značka s názvom triedy zoznam mien . Uložil som všetky vybraté na prvky v zoznam mien premenná.

TO pre slučka sa používa na iteráciu cez zoznam mien zoznam na prvky. V každej iterácii je obsah súboru na prvok je vytlačený na konzole.

Ak spustíte ex07.py Skript Python, ktorý načíta všetky náhodné názvy z webovej stránky a vytlačí ho na obrazovku, ako vidíte na obrázku nižšie.

$ python3 ex07.py

Ak skript spustíte druhýkrát, mal by vrátiť nový zoznam náhodných mien používateľov, ako môžete vidieť na obrázku nižšie.

Príklad 5: Odoslanie formulára - vyhľadávanie na DuckDuckGo

Tento príklad je rovnako jednoduchý ako prvý príklad. V tomto prípade navštívim vyhľadávací nástroj DuckDuckGo a vyhľadám ho selén hq pomocou selénu.

Najprv navštívte Vyhľadávací nástroj DuckDuckGo z webového prehliadača Firefox.

Ak skontrolujete vstupné pole pre vyhľadávanie, malo by mať ID search_form_input_homepage , ako vidíte na obrázku nižšie.

Teraz vytvorte nový skript Python ex08.py a do skriptu napíšte nasledujúce riadky kódov.

odselénimportwebdriver
odselén.webdriver.spoločný.kľúče importKľúče
prehliadač=webdriver.Firefox(spustiteľná_cesta='./drivers/geckodriver')
prehliadač.dostať('https://duckduckgo.com/')
searchInput=prehliadač.find_element_by_id('search_form_input_homepage')
searchInput.send_keys(„selén hq“+ Kľúče.VSTÚPIŤ)

Keď skončíte, uložte súbor ex08.py Skript Python.

Tu, browser.get () metóda načíta domovskú stránku vyhľadávacieho nástroja DuckDuckGo vo webovom prehliadači Firefox.

The browser.find_element_by_id () metóda vyberie vstupný prvok s id search_form_input_homepage a uloží ho do searchInput premenná.

The searchInput.send_keys () metóda sa používa na odoslanie údajov o stlačení klávesu do vstupného poľa. V tomto prípade odošle reťazec selén hq , a kláves Enter sa stlačí pomocou Kľúče.ENTER konštantný.

Hneď ako vyhľadávací nástroj DuckDuckGo dostane kláves Enter, stlačte ( Kľúče.ENTER ), vyhľadá a zobrazí výsledok.

Spustite súbor ex08.py Skript Python takto:

$ python3 ex08.py

Ako vidíte, webový prehliadač Firefox navštívil vyhľadávací nástroj DuckDuckGo.

Automaticky sa zadalo selén hq do textového poľa pre vyhľadávanie.

Hneď ako prehliadač dostane kláves Enter, stlačte ( Kľúče.ENTER ), zobrazilo to výsledok vyhľadávania.

Príklad 6: Odoslanie formulára na W3Schools.com

V príklade 5 bolo odoslanie formulára vyhľadávacieho nástroja DuckDuckGo jednoduché. Stačilo stlačiť kláves Enter. Nebude to však platiť pre všetky formuláre. V tomto prípade vám ukážem komplexnejšie spracovanie formulárov.

Najprv navštívte Stránka Formuláre HTML stránky W3Schools.com z webového prehliadača Firefox. Po načítaní stránky by ste mali vidieť ukážkový formulár. Toto je formulár, ktorý odošleme v tomto príklade.

Ak sa pozriete na formulár, Krstné meno vstupné pole by malo mať id fname , Priezvisko vstupné pole by malo mať id lname , a Tlačidlo Odoslať by mal mať typ Predložiť , ako vidíte na obrázku nižšie.

Na odoslanie tohto formulára pomocou selénu vytvorte nový skript Python ex09.py a do skriptu napíšte nasledujúce riadky kódov.

odselénimportwebdriver
odselén.webdriver.spoločný.kľúče importKľúče
prehliadač=webdriver.Firefox(spustiteľná_cesta='./drivers/geckodriver')
prehliadač.dostať(„https://www.w3schools.com/html/html_forms.asp“)
fname=prehliadač.find_element_by_id('fname')
fname.jasný()
fname.send_keys(„Shahriar“)
lname=prehliadač.find_element_by_id('meno')
lname.jasný()
lname.send_keys(„Shovon“)
submitButton=prehliadač.find_element_by_css_selector('input [type =' submit ']')
submitButton.send_keys(KľúčeVSTÚPIŤ)

Keď skončíte, uložte súbor ex09.py Skript Python.

Tu, browser.get () metóda otvorí stránku formulárov HTML W3schools vo webovom prehliadači Firefox.

The browser.find_element_by_id () metóda vyhľadá vstupné polia podľa id fname a lname a uloží ich do fname a lname premenné, resp.

The fname.clear () a lname.clear () metódy vymažú predvolené krstné meno (John) fname hodnota a priezvisko (Doe) lname hodnotu zo vstupných polí.

The fname.send_keys () a lname.send_keys () metódy typu Shahriar a Shovon v Krstné meno a Priezvisko vstupné polia, resp.

The browser.find_element_by_css_selector () metóda vyberie Tlačidlo Odoslať formulára a uloží ho do súboru submitButton premenná.

The submitButton.send_keys () metóda odošle stlačenie klávesu Enter ( Kľúče.ENTER ) na Tlačidlo Odoslať formulára. Táto akcia odošle formulár.

Spustite súbor ex09.py Skript Python takto:

$ python3 ex09.py

Ako vidíte, formulár bol automaticky odoslaný so správnymi vstupmi.

Záver

Tento článok by vám mal pomôcť začať s testovaním prehliadača Selenium, automatizáciou webu a knižnicami zošrotovania webu v Pythone 3. Ďalšie informácie nájdete v oficiálna dokumentácia Selenium Python .