SeleniumBase: Lepšie testovanie webu pomocou Selenium a Pytest
Lepšie testovanie webu pomocou Selenium a pytestu.
Jeden z mnohých príkladov: test_demo_site.py
|_+_|
Nastavenie Pythonu:
Pridať Python a Git na vašu System PATH.
Odporúča sa použiť virtuálne prostredie Python.
Nainštalujte SeleniumBase:
Môžete nainštalovať |_+_| od GitHub alebo PyPI :
Inštaluje sa |_+_| z klonu GitHub:
|_+_|(Pri použití virtuálneho prostredia je Upraviteľná inštalácia rýchlejšia.)
Inštaluje sa |_+_| z PyPI:
|_+_|(Pridajte |_+_| ALEBO |_+_| na inštaláciu najnovšej |_+_|.) (Pridajte |_+_|, ak chcete nainštalovať aj najnovšie závislosti.) (Použite |_+_|, ak máte viacero verzií Python je nainštalovaný.)
Typ |_+_| alebo |_+_| aby ste si overili, že SeleniumBase bola úspešne nainštalovaná:
|_+_|Sťahovanie webových ovládačov:
✅ SeleniumBase automaticky stiahne webové ovládače podľa potreby, ako napríklad |_+_| a |_+_| (Firefox).
✅ Ak chcete manuálne stiahnuť webový ovládač, pozrite si časť Skripty konzoly ALEBO Inštalácia webového ovládača.
Priebežné testy:
Ak ste naklonovali SeleniumBase, môžete spustiť testy z priečinka example/.
Tu je môj_first_test.py v |_+_| režim:
|_+_|(Chrome je predvolený prehliadač, ak nie je špecifikovaný pomocou |_+_|. V systéme Linux je predvolené správanie |_+_|.)
Tu je kód pre my_first_test.py :
|_+_|- Predvolene, Selektor CSS sa používajú na vyhľadávanie prvkov stránky.
- Ak ste novým používateľom CSS Selectors, hry ako CSS Diner vám môžu pomôcť naučiť sa.
- Tu sú niektoré bežné |_+_| metódy, ktoré môžete nájsť v testoch:
Úplný zoznam metód SeleniumBase nájdete na: Zhrnutie metódy
Uč sa viac:
✅ Automatické funkcie WebDriver:
SeleniumBase automaticky spracováva bežné akcie WebDriver, ako je spustenie webových prehliadačov a ukladanie snímok obrazovky počas zlyhania testu. ( Prečítajte si viac o prispôsobení testovacích sérií . )
✅ Zjednodušený kód:
SeleniumBase používa jednoduchú syntax pre príkazy. Príklad:
|_+_|Testy SeleniumBase je možné spustiť s oboma |_+_| a |_+_|, ale s použitím |_+_| sa odporúča. (|_+_| je predvolený prehliadač, ak nie je zadaný.)
|_+_|✅ Automatické zisťovanie testov:
Všetky metódy Pythonu, ktoré začínajú |_+_| sa spustí automaticky pri spustení |_+_| alebo |_+_| na súboroch Python. Môžete tiež konkrétnejšie určiť, čo sa má v súbore spustiť, pomocou nasledujúceho: ( Všimnite si, že syntax je odlišná pre pytest a nosetesty. )
|_+_|✅ Už žiadne vločkovité testy:
Metódy SeleniumBase pred interakciou s prvkami stránky automaticky čakajú na dokončenie načítania prvkov stránky ( do časového limitu ). To znamená teba už netreba náhodný time.sleep() výroky vo vašich skriptoch.
✅ Automatizovaný/Manuálny hybridný režim:
SeleniumBase obsahuje riešenie tzv MasterQA , čo zrýchľuje manuálne testovanie tým, že automatizácia vykonáva všetky akcie prehliadača, zatiaľ čo manuálny tester sa stará o overenie.
✅ Bohaté na funkcie:
Pre úplný zoznam funkcií SeleniumBase kliknite sem.
Podrobné pokyny:
Môžeš použiť Demo režim aby ste videli, čo test robí: Ak sa test pohybuje príliš rýchlo pre vaše oči, spustite ho Demo režim pridaním |_+_| na príkazovom riadku, ktorý medzi akciami nakrátko pozastaví prehliadač, zvýrazní prvky stránky, s ktorými sa pracuje, a zobrazí tvrdenia:
|_+_||_+_| zahŕňa testovanie. Ak nešpecifikujete konkrétny súbor alebo priečinok, z ktorého sa má spustiť, |_+_| bude vo všetkých podadresároch automaticky hľadať testy, ktoré sa majú spustiť na základe nasledujúcich kritérií zhody: Názvy súborov Pythonu, ktoré začínajú |_+_| alebo končí na |_+_|. Metódy Pythonu, ktoré začínajú |_+_|. Názov triedy Python môže byť akýkoľvek od SeleniumBase |_+_| trieda dedí z |_+_| trieda. Môžete vidieť, ktoré testy sú objavené pomocou |_+_| používaním:
|_+_|Na pomoc pri ladení problémov môžete v skriptoch použiť nasledujúce volania:
|_+_|Ak chcete pozastaviť aktívny test, ktorý vyvolá výnimku alebo chybu, pridajte |_+_|:
|_+_|Vyššie uvedený kód ponechá okno prehliadača otvorené v prípade zlyhania. (príkazy ipdb: 'n', 'c', 's' => ďalší, pokračovať, krok).
Tu je niekoľko užitočných možností príkazového riadka, ktoré prichádzajú s |_+_|:
|_+_|SeleniumBase poskytuje ďalšie |_+_| možnosti príkazového riadka pre testy:
|_+_|(Ďalšie podrobnosti nájdete v úplnom zozname možností príkazového riadka tu .)
Počas zlyhania testu sa protokoly a snímky obrazovky z posledného testovania uložia do |_+_| priečinok. Tieto denníky sa presunú do |_+_| ak pridáte --archive_logs do volieb príkazového riadka alebo máte ARCHIVE_EXISTING_LOGS nastavené na True v settings.py , inak budú protokolové súbory vyčistené na začiatku nasledujúceho testovacieho behu. |_+_| kolekcia obsahuje testy, ktoré zámerne zlyhajú, takže môžete vidieť, ako funguje protokolovanie.
|_+_|Jednoduchý spôsob, ako prepísať seleniumbase/config/settings.py, je použiť súbor vlastných nastavení. Tu je možnosť príkazového riadka na pridanie do testov: (Pozrite si príklady/custom_settings.py ) |_+_| (Nastavenia zahŕňajú predvolené hodnoty časového limitu, dvojfaktorový autorizačný kľúč, poverenia DB, poverenia S3 a ďalšie dôležité nastavenia používané pri testoch.)
Ak chcete do testov odovzdať ďalšie údaje z príkazového riadka, pridajte |_+_|. Vo svojich testoch môžete použiť |_+_| na prístup k tomu.
Testovať konfiguráciu adresára:
Pri spustení testov s pytest , budete chcieť kópiu pytest. ini vo vašich koreňových priečinkoch. Pri spustení testov s nosové testy , budete chcieť kópiu setup.cfg vo vašich koreňových priečinkoch. Tieto súbory špecifikujú predvolené konfiguračné detaily pre testy. Priečinky by tiež mali obsahovať prázdne |_+_| súbor, ktorý umožňuje vašim testom importovať súbory z tohto priečinka.
|_+_| vytvorí priečinok s konfiguračnými súbormi a vzorovými testami:
|_+_||_+_|Tento nový priečinok bude obsahovať tieto súbory:
ProTip™: Môžete tiež vytvoriť štandardný priečinok bez vzorových testov pridaním |_+_| alebo |_+_| do |_+_| príkaz:
|_+_||_+_|Tento nový priečinok bude obsahovať tieto súbory:
Z týchto súborov |_+_| konfiguračný súbor je najdôležitejší, za ktorým nasleduje prázdne |_+_| súbor. Je tu aj |_+_| súbor (potrebný len pri nosetestoch). Nakoniec |_+_| možno použiť na pomoc pri inštalácii seleniumbase do vašich prostredí (ak ešte nie je nainštalovaný).
Protokoly z neúspešných testov:
Skúsme príklad testu, ktorý zlyhal:
|_+_|Môžete ho spustiť z |_+_| priečinok takto:
|_+_|Všimnite si, že bol vytvorený priečinok protokolov „latest_logs“, ktorý obsahuje informácie o neúspešnom teste a snímky obrazovky. Počas testovacích spustení sa minulé výsledky presunú do priečinka archived_logs, ak máte ARCHIVE_EXISTING_LOGS nastavené na hodnotu True v settings.py alebo ak ste spustili testy s |_+_|. Ak sa rozhodnete nearchivovať existujúce protokoly, vymažú sa a nahradia sa protokolmi posledného testovania.
Ovládací panel SeleniumBase:
|_+_| voľba pre pytest generuje SeleniumBase Dashboard umiestnený na |_+_|, ktorý sa automaticky aktualizuje, keď prebiehajú testy a prinášajú výsledky. Príklad:
|_+_|
Okrem toho môžete hostiť svoj vlastný server SeleniumBase Dashboard Server na porte podľa vášho výberu. Tu je príklad použitia Pythonu 3 |_+_|:
|_+_|Teraz môžete prejsť na |_+_| aby ste mohli zobraziť dashboard ako webovú aplikáciu. To si vyžaduje dve rôzne terminálové okná: jedno na spustenie servera a druhé na spustenie testov, ktoré by sa mali spúšťať z rovnakého adresára. (Na zastavenie http servera použite |_+_|.)
ako kúpiť veterinára na binance
Tu je úplný príklad toho, ako môže SeleniumBase Dashboard vyzerať:
|_+_|
Vytváranie vizuálnych testovacích správ:
Správy Pytest:
Pomocou |_+_| vám po dokončení testovacieho balíka poskytne efektnú správu s názvom zadaným.
|_+_|
Pri kombinovaní zostáv pytest html s používaním panela SeleniumBase Dashboard sa do html zostavy pridá koláčový graf z informačného panela. Okrem toho, ak nastavíte adresu URL prehľadu html tak, aby bola rovnaká ako adresa URL informačného panela aj pri používaní informačného panela (príklad: |_+_|), potom sa informačný panel po dokončení všetkých testov stane rozšíreným prehľadom html.
Tu je príklad inovovaného html prehľadu:
|_+_|
Ak si prezeráte pytest html zostavy v Jenkins , možno budete musieť nakonfigurovať Jenkinsove nastavenia pre html, aby sa správne vykresľoval. Dôvodom sú zmeny v CSP Jenkins.
Môžete použiť aj |_+_| namiesto toho získate xml prehľad. Jenkins môže použiť tento súbor na zobrazenie lepších správ pre vaše testy.
|_+_|Správy Nosetest:
|_+_| Táto možnosť vám po dokončení testovacieho balíka poskytne fantastickú správu.
|_+_|
(POZNÁMKA: Môžete pridať |_+_| na okamžité zobrazenie správ Nosetest po dokončení testovacej súpravy. |_+_| používajte iba pri lokálnom spúšťaní testov, pretože to pozastaví testovanie.)
Allure správy:
Pozri: https://docs.qameta.io/allure/
SeleniumBase už neobsahuje |_+_| ako súčasť nainštalovaných závislostí. Ak ho chcete používať, najskôr ho nainštalujte:
|_+_|Teraz môžu vaše testy vytvárať súbory výsledkov Allure, ktoré môžu byť spracované pomocou Allure Reports.
|_+_|Používanie proxy servera:
Ak chcete na testy prehliadača použiť proxy server (Chromium alebo Firefox), môžete pridať |_+_| ako argument na príkazovom riadku.
|_+_|Ak proxy server, ktorý chcete použiť, vyžaduje overenie, môžete urobiť nasledovné (iba prehliadač Chromium):
|_+_|SeleniumBase tiež podporuje proxy servery SOCKS4 a SOCKS5:
|_+_|Aby ste to uľahčili, môžete svoje často používané proxy pridať do PROXY_LIST v proxy_list.py a potom použiť |_+_| použiť IP_ADDRESS:PORT tohto kľúča.
|_+_|Zmena User-Agenta:
Ak chcete zmeniť User-Agent pre testy vášho prehliadača (iba Chromium a Firefox), môžete pridať |_+_| ako argument na príkazovom riadku.
|_+_|Spracovanie pop-up / pop-up upozornení:
|_+_| automaticky čaká na vyskakovacie okná s upozornením a prijíma ich. |_+_| automaticky čaká na vyskakovacie okná s upozornením a zatvorí ich. Príležitostne niektoré metódy ako |_+_| môžu zatvoriť kontextové okno samo o sebe, pretože volajú JavaScript, aby sa uistili, že |_+_| stránky je |_+_| pred postupom. Ak sa pokúšate prijať kontextové okno, ktoré bolo odmietnuté týmto spôsobom, použite toto riešenie: Zavolajte |_+_| namiesto toho (čo umožní, aby kontextové okno zostalo na obrazovke), a potom použite |_+_| akceptovať kontextové okno ( viac o tom tu ). Ak sú kontextové okná prerušované, zabaľte kód do bloku pokus/okrem.
Vytváranie prehliadok so sprievodcom pre webové stránky:
Získajte informácie o interaktívnych návodoch SeleniumBase (v priečinku |_+_|). Je to skvelé na prototypovanie zážitku zo zavádzania webových stránok.
Produkčné prostredia a integrácie:
Tu je niekoľko vecí, ktoré môžete urobiť pre nastavenie produkčného prostredia pre vaše testovanie:
Môžete nastaviť zostavovací server Jenkins na spustenie testov v pravidelných intervaloch. Ak chcete získať skutočný príklad Jenkinsovej bezhlavej automatizácie prehliadača v akcii, pozrite si príklad SeleniumBase Jenkins v Azure alebo príklad SeleniumBase Jenkins v službe Google Cloud .
Selenium Grid môžete použiť na škálovanie testovania distribúciou testov na niekoľkých počítačoch s paralelným vykonávaním. Ak to chcete urobiť, pozrite sa do priečinka SeleniumBase selenium_grid , ktorý by mal obsahovať všetko, čo potrebujete, vrátane súboru Selenium Grid ReadMe , ktorý vám pomôže začať.
Ak používate funkciu SeleniumBase MySQL na ukladanie výsledkov testov spustených na serveri, môžete si nainštalovať MySQL Workbench, ktorý vám pomôže jednoduchšie čítať a zapisovať z vašej databázy.
showtimea core.com/activate
Ak používate Slack, pomocou doplnku Jenkins Slack môžete jednoducho zobraziť výsledky svojich úloh Jenkins. Ďalším spôsobom odosielania správ z testov do Slacku je použitie rozhrania Slack's Incoming Webhooks API .
Ak používate AWS, môžete si nastaviť účet Amazon S3 na ukladanie súborov denníka a snímok obrazovky z testov. Ak chcete aktivovať túto funkciu, upravte settings.py s podrobnosťami o pripojení v sekcii S3 a pridajte '|_+_|' na príkazovom riadku pri spustení testov.
Tu je príklad spustenia testov so zapnutými ďalšími funkciami:
|_+_|Podrobné špecifikácie metódy a príklady:
Prechod na webovú stránku: (a súvisiace príkazy)
|_+_|ProTip™: Možno budete musieť použiť |_+_| spolu s Pythonovým |_+_| príkaz analyzovať zdroj a nájsť niečo, čo by Selenium nebolo možné. (Možno si budete chcieť oprášiť svoje programovacie zručnosti v Pythone.)
|_+_|Kliknutie:
Ak chcete kliknúť na prvok na stránke:
|_+_|ProTip™: Vo väčšine webových prehliadačov môžete kliknúť pravým tlačidlom myši na stránku a vybrať |_+_| zobrazíte podrobnosti selektora CSS, ktoré budete potrebovať na vytvorenie vlastných skriptov.
Písanie textu:
|_+_| # aktualizuje text zo zadaného prvku zadanou hodnotou. Výnimka sa vyvolá, ak prvok chýba alebo ak textové pole nie je možné upravovať. Príklad:
|_+_|Môžete použiť aj |_+_| alebo WebDriver |_+_| príkaz, ale tie najskôr nevymažú textové pole, ak sa v ňom už nachádza text. Ak chcete zadať špeciálne klávesy, je to tiež jednoduché. Tu je príklad:
|_+_|Získanie textu z prvku na stránke:
|_+_|Získanie hodnoty atribútu z prvku na stránke:
|_+_|Potvrdenie existencie prvku na stránke v priebehu niekoľkých sekúnd:
|_+_|(POZNÁMKA: Môžete použiť aj: |_+_|)
Zaistenie viditeľnosti prvku na stránke v priebehu niekoľkých sekúnd:
|_+_|(POZNÁMKA: Krátke verzie tohto sú |_+_| a |_+_|. Verzia find_element() vracia prvok)
Keďže riadok vyššie vracia prvok, môžete ho skombinovať s .click(), ako je uvedené nižšie:
|_+_|ProTip™: Na označenie názvov tried môžete použiť bodky (napr. |_+_|) ako zjednodušenú verziu |_+_| v selektore CSS.
Môžete použiť aj |_+_| ak chcete vyhľadať akúkoľvek čiastočnú hodnotu v selektore CSS, ako je uvedené nižšie:
|_+_|Zaistenie viditeľnosti textu vo vnútri prvku na stránke v priebehu niekoľkých sekúnd:
|_+_|(POZNÁMKA: Robia to aj |_+_| a |_+_|. Kvôli spätnej kompatibilite boli ponechané staršie názvy metód, ale predvolený časový limit môže byť iný.)
Tvrdenie čohokoľvek:
|_+_|Užitočné podmienené vyhlásenia: (s kreatívnymi príkladmi v akcii)
is_element_visible(selektor) # je prvok viditeľný na stránke
|_+_|is_element_present(selektor) # je prvok prítomný na stránke
|_+_|Ďalší príklad:
|_+_|is_text_visible(text, selektor) # je text viditeľný na stránke
|_+_|Prepínanie kariet:
Ak váš test otvorí novú kartu/okno, môžete naň prepnúť. (SeleniumBase sa automaticky prepne na nové karty, ktoré sa neotvárajú na adresy URL ``about:blank``.)
|_+_|ProTip™: Rámce iFrame sa riadia rovnakým princípom ako nové okná – ak chcete s niečím v ňom vykonať akciu, musíte ho špecifikovať
|_+_|Vykonávanie vlastných skriptov jQuery:
jQuery je výkonná knižnica JavaScript, ktorá vám umožňuje vykonávať pokročilé akcie vo webovom prehliadači. Ak webová stránka, na ktorej sa nachádzate, už má načítaný jQuery, môžete okamžite začať spúšťať skripty jQuery. Vedeli by ste to, pretože webová stránka by v HTML obsahovala niečo ako nasledovné:
|_+_|Je to v poriadku, ak chcete použiť jQuery na stránke, ktorá ho ešte nemá načítaný. Ak to chcete urobiť, najskôr spustite nasledujúci príkaz:
|_+_|Niektoré webové stránky majú reštriktívnu politiku zabezpečenia obsahu, ktorá zabraňuje používateľom načítať jQuery a iné externé knižnice na ich webové stránky. Ak potrebujete na takomto webe použiť jQuery alebo inú knižnicu JS, pridajte |_+_| na príkazovom riadku.
Tu je niekoľko príkladov použitia jQuery vo vašich skriptoch:
|_+_|(Väčšinu vyššie uvedených príkazov je možné vykonať priamo pomocou vstavaných metód SeleniumBase.)
V ďalšom príklade JavaScript vytvorí na stránke tlačidlo sprostredkovania, na ktoré sa potom klikne:
|_+_|(Vzhľadom na populárny dopyt bol tento príklad generovania návštevnosti zahrnutý do SeleniumBase s metódami |_+_| a |_+_|.)
Použitie odložených tvrdení:
Povedzme, že chcete overiť viacero rôznych prvkov na webovej stránke v jednom teste, ale nechcete, aby test zlyhal, kým neoveríte niekoľko prvkov naraz, aby ste nemuseli test opakovať, aby ste našli ďalšie chýbajúce. prvky na tej istej stránke. Tu prichádzajú na scénu odložené tvrdenia. Tu je príklad:
|_+_||_+_| a |_+_| uloží všetky výnimky, ktoré by boli vznesené. Ak chcete vyprázdniť všetky neúspešné odložené tvrdenia do jedinej výnimky, nezabudnite zavolať |_+_| na konci vašej testovacej metódy. Ak váš test zasiahne viacero stránok, môžete zavolať |_+_| pred prechodom na novú stránku, aby sa snímka obrazovky z vašich protokolových súborov zhodovala s adresou URL, na ktorej boli vykonané odložené tvrdenia.
Prístup k Raw WebDriver:
Ak potrebujete prístup k akýmkoľvek príkazom, ktoré sú súčasťou štandardného ovládača WebDriver, môžete ich zavolať priamo takto:
|_+_|(Vo všeobecnosti budete chcieť použiť verzie metód SeleniumBase, ak sú k dispozícii.)
Automaticky opakovať neúspešné testy:
Môžete použiť |_+_| opakovať neúspešné testy toľkokrát. Použite |_+_| aby ste medzi jednotlivými pokusmi počkali toľko sekúnd. Príklad:
|_+_|Okrem toho môžete použiť |_+_| dekoratér, aby konkrétne znova vyskúšal neúspešné metódy. (Prvý import: |_+_|) Ak sa chcete dozvedieť viac o dekorátoroch SeleniumBase, [kliknite sem](https://github.com/seleniumbase/SeleniumBase/tree/master/seleniumbase/common).
Zabaliť
Gratulujeme, že ste začali so SeleniumBase!
Podrobnosti o stiahnutí:
Autor: SeleniumBase
Zdrojový kód: https://github.com/seleniumbase/SeleniumBase
Licencia: Licencia MIT
#selén #SeleniumBase #python #testovanie