Co je to Selenium WebDriver?

โšก Chytrรฉ shrnutรญ

Selenium WebDriver je open-source automatizaฤnรญ framework, kterรฝ ovlรกdรก skuteฤnรฉ prohlรญลพeฤe pล™รญmo prostล™ednictvรญm nativnรญch API, coลพ umoลพลˆuje rychlรฉ, spolehlivรฉ a multi-browserovรฉ testovรกnรญ webovรฝch aplikacรญ pomocรญ jazykลฏ jako Java, Python, C# a Ruby.

  • Zรกkladnรญ princip: WebDriver komunikuje s prohlรญลพeฤi na รบrovni operaฤnรญho systรฉmu pro rychlejลกรญ a pล™esnฤ›jลกรญ provรกdฤ›nรญ testลฏ neลพ Selenium RC.
  • Architexturรกlnรญ vhled: Standardnรญ protokol JSON Wire od W3C umoลพลˆuje bezproblรฉmovou interakci jazykovรฝch vazeb, ovladaฤลฏ a prohlรญลพeฤลฏ.
  • Zamฤ›ล™enรญ implementace: Vyberte libovolnรฝ podporovanรฝ jazyk โ€“Java, Python, C#, Ruby, JavaSkript โ€“ pro opakovanฤ› pouลพitelnรฉ, podmรญnฤ›nรฉ a loo skriptyping testovacรญ toky.
  • Tip pro optimalizaci: Pro urychlenรญ provรกdฤ›nรญ v rรกmci kanรกlลฏ kontinuรกlnรญ integrace pouลพijte HtmlUnitDriver nebo headless Chrome.
  • Dopad na skuteฤnรฝ svฤ›t: WebDriver napodobuje skuteฤnรฉ chovรกnรญ uลพivatelลฏ a pล™esnฤ› ovฤ›ล™uje zakรกzanรก pole, skrytรฉ prvky a dynamickรฉ stavy uลพivatelskรฉho rozhranรญ.

Selenium WebDriver a podporovanรฉ prohlรญลพeฤe

Co je to Selenium WebDriver?

Selenium webovรฝ ovladaฤ je open-source kolekce API pouลพรญvanรฝch k automatizaci testovรกnรญ webovรฝch aplikacรญ. Ovฤ›ล™uje, zda webovรก aplikace funguje podle oฤekรกvรกnรญ v rลฏznรฝch prohlรญลพeฤรญch, vฤetnฤ› Chromu, FirefoxSafari Microsoft Edgea Internet Explorer. WebDriver takรฉ podporuje testovรกnรญ napล™รญฤ prohlรญลพeฤi v rลฏznรฝch operaฤnรญch systรฉmech.

Selenium WebDriver a podporovanรฉ prohlรญลพeฤe

Na rozdรญl od Selenium IDE, WebDriver vรกm umoลพลˆuje pouลพรญvat skuteฤnรฝ programovacรญ jazyk k nรกvrhu testovacรญch skriptลฏ, takลพe mลฏลพete aplikovat podmรญnฤ›nou logiku, jako je if-then-else a switch-case, plus loo.ping konstrukty jako for a do-while. WebDriver podporuje nรกsledujรญcรญ jazyky:

  • Java
  • .NET (C#)
  • PHP
  • Python
  • Perl
  • Rubรญn
  • JavaSkript (pล™es WebDriverJS / WebDriverIO)

Nemusรญte se je vลกechny nauฤit โ€“ staฤรญ znalost jen jednoho. Pล™รญklady v tomto tutoriรกlu pouลพรญvajรญ Java s Eclipse SDI.

Architecture of Selenium webovรฝ ovladaฤ

Selenium WebDriver vyuลพรญvรก architekturu klient-server a ovlรกdรก prohlรญลพeฤ pล™รญmo z รบrovnฤ› operaฤnรญho systรฉmu. Ke spuลกtฤ›nรญ libovolnรฉho skriptu potล™ebujete pouze preferovanรฉ IDE programovacรญho jazyka (obsahujรญcรญ Selenium pล™รญkazy) a cรญlovรฝ prohlรญลพeฤ.

Zjednoduลกenรก architektura Selenium webovรฝ ovladaฤ

Rรกmec se sklรกdรก ze ฤtyล™ klรญฤovรฝch komponent: Selenium klientskรฉ knihovny (jazykovรฉ vazby), protokol JSON Wire pล™es HTTP, ovladaฤe prohlรญลพeฤลฏ (napล™รญklad ChromeDriver a GeckoDriver) a samotnรฉ prohlรญลพeฤe. Kaลพdรก komponenta komunikuje prostล™ednictvรญm standardizovanรฝch poลพadavkลฏ HTTP, coลพ dรกvรก WebDriveru jeho vรฝhody v rychlosti a pล™esnosti, kterรฉ jsou popsรกny nรญลพe.

Rychlost

Rychlost spuลกtฤ›nรญ WebDriveru

WebDriver je rychlejลกรญ neลพ Selenium RC, protoลพe komunikuje pล™รญmo s prohlรญลพeฤem a k ovlรกdรกnรญ pouลพรญvรก jeho nativnรญ engine. Neexistuje ลพรกdnรฝ mezilehlรฝ JavaSkriptovacรญ proxy server, kterรฝ odstraลˆuje hlavnรญ problรฉm s vรฝkonem.

Interakce v reรกlnรฉm ลพivotฤ›

Interakce s prvky prohlรญลพeฤe v reรกlnรฉm ลพivotฤ›

WebDriver interaguje s prvky strรกnky stejnฤ› jako skuteฤnรฝ uลพivatel. Pokud mรกte napล™รญklad na testovanรฉ strรกnce zakรกzanรฉ textovรฉ pole, WebDriver do nฤ›j nemลฏลพe psรกt โ€“ protoลพe by to nemohl udฤ›lat ani skuteฤnรฝ ฤlovฤ›k. Tento realismus sniลพuje poฤet faleลกnฤ› pozitivnรญch vรฝsledkลฏ testลฏ.

API

Selenium Jednoduchรฉ API WebDriveru

WebDriver nabรญzรญ ฤistรฉ a jednoduchรฉ API, kterรฉ neobsahuje nadbyteฤnรฉ ani matoucรญ pล™รญkazy, coลพ usnadลˆuje ฤtenรญ a รบdrลพbu testovacรญch skriptลฏ.

Podpora prohlรญลพeฤe

Podpora headless prohlรญลพeฤe HtmlUnit

WebDriver takรฉ podporuje prohlรญลพeฤ HtmlUnit bez headless. Protoลพe HtmlUnit nemรก grafickรฉ rozhranรญ, oznaฤuje se jako โ€žheadlessโ€œ a bฤ›ลพรญ neviditelnฤ› na pozadรญ. Dรญky tomu je extrรฉmnฤ› rychlรฝ pro provรกdฤ›nรญ testลฏ, protoลพe nespotล™ebovรกvรก ลพรกdnรฝ ฤas na vykreslovรกnรญ, a je ideรกlnรญ pro CI/CD pipelines, kde nenรญ k dispozici grafickรฉ rozhranรญ.

Jak Selenium WebDriver funguje krok za krokem

S ohledem na architekturu se typickรฝ test WebDriveru provรกdรญ takto:

  1. Napiลกte testovacรญ skript ve vรกmi zvolenรฉm jazyce pomocรญ Selenium klientskรฉ knihovny.
  2. Serializace pล™รญkazลฏโ€”vazba pล™evรกdรญ kaลพdรฝ Selenium volรกnรญ do poลพadavku JSON Wire Protocol.
  3. Odeslat do ovladaฤe prohlรญลพeฤeโ€”poลพadavek dorazรญ k lokรกlnรญmu ovladaฤi (ChromeDriver, GeckoDriver, EdgeDriver), kterรฝ naslouchรก na lokรกlnรญm portu.
  4. ล˜idiฤ dรกvรก pokyny prohlรญลพeฤi pomocรญ nativnรญho automatizaฤnรญho API pro klikรกnรญ, psanรญ nebo ฤtenรญ prvkลฏ.
  5. Prohlรญลพeฤ se spustรญ a odpovรญ, pล™iฤemลพ vรฝsledek se vrรกtรญ jako datovรก ฤรกst JSON.
  6. Prohlรกsit a nahlรกsitโ€“ rรกmec, jako je napล™รญklad TestNG, JUnit, nebo PyTest ovฤ›ล™รญ odpovฤ›ฤ a zaznamenรก, zda byla รบspฤ›ลกnรก nebo neรบspฤ›ลกnรก.

Stejnรฝ skript mลฏลพe bฤ›ลพet lokรกlnฤ›, uvnitล™ Dockeru nebo na vzdรกlenรฝch gridech, jako je Selenium Mล™รญลพka bez รบprav.

Selenium WebDriver vs. Selenium IDE vs. Selenium RC

Prรกvo Selenium Nรกstroj zรกvisรญ na cรญli testovรกnรญ. Nรญลพe uvedenรก tabulka porovnรกvรก vลกechny tล™i:

vlastnost Selenium IDE Selenium RC Selenium webovรฝ ovladaฤ
Typ Plugin prohlรญลพeฤe JavaProxy server skriptลฏ Nativnรญ automatizace API
Rychlost Rychlรฉ pล™ehrรกvรกnรญ Pomalu nejrychlejลกรญ
Jazyky Nevyplnฤ›no Nรกsobek Nรกsobek
Bezhlavรฝ prohlรญลพeฤ Ne Ne Ano
Status Omezenรฝ Zastaralรฉ Standard W3C

Pro modernรญ projekty je doporuฤenou volbou WebDriver โ€“ standardizovanรฝ podle W3C, aktivnฤ› udrลพovanรฝ a s nejลกirลกรญ podporou jazykลฏ a prohlรญลพeฤลฏ.

Omezenรญ WebDriver

Pล™estoลพe je WebDriver vรฝkonnรฝ, nenรญ bez kompromisลฏ. Znalost jeho omezenรญ vรกm pomลฏลพe realisticky naplรกnovat strategii automatizace.

WebDriver nemลฏลพe snadno podporovat zcela novรฉ prohlรญลพeฤe

Protoลพe WebDriver funguje na รบrovni operaฤnรญho systรฉmu a rลฏznรฉ prohlรญลพeฤe s nรญm komunikujรญ rลฏznรฝmi zpลฏsoby, mลฏลพe kaลพdรฉ novรฉ vydรกnรญ prohlรญลพeฤe vyลพadovat aktualizovanรฝ ovladaฤ. Tรฝm WebDriveru potล™ebuje ฤas na prostudovรกnรญ procesu novรฉho prohlรญลพeฤe, neลพ bude moci vydat kompatibilnรญ ovladaฤ. Do tรฉ doby se nฤ›kterรฉ pล™รญkazy mohou v novรฉm prohlรญลพeฤi chovat nekonzistentnฤ› nebo zcela selhรกvat.

ลฝรกdnรฉ vestavฤ›nรฉ testovacรญ protokoly

WebDriver sรกm o sobฤ› negeneruje zprรกvy o vรฝsledcรญch testลฏ. Musรญte jej integrovat s frameworkem pro jednotkovรฉ testovรกnรญ (TestNG, JUnit, NUnit, PyTest) nebo knihovnu pro tvorbu reportลฏ (Allure, ExtentReports) pro zachycenรญ souhrnลฏ รบspฤ›ลกnรฝch/neรบspฤ›ลกnรฝch testลฏ a snรญmkลฏ obrazovky.

Nejฤastฤ›jลกรญ dotazy

Selenium WebDriver oficiรกlnฤ› podporuje Java, C#, Python, Ruby, JavaScript (Node.js) a Kotlin. Komunitnรญ vazby existujรญ takรฉ pro PHP a Perl. Vฤ›tลกina tรฝmลฏ volรญ Java or Python dรญky rozvinutรฝm ekosystรฉmลฏm a ลกirokรฉ podpoล™e komunity.

Ano. Selenium WebDriver je vydรกvรกn pod licencรญ Apache 2.0, kterรก umoลพลˆuje bezplatnรฉ osobnรญ i komerฤnรญ pouลพitรญ. Nejsou รบฤtovรกny ลพรกdnรฉ licenฤnรญ poplatky a zdrojovรฝ kรณd mลฏลพete upravovat nebo dรกle distribuovat, pokud zachovรกte pลฏvodnรญ upozornฤ›nรญ na autorskรก prรกva.

WebDriver sรกm o sobฤ› cรญlรญ na webovรฉ prohlรญลพeฤe, nikoli na nativnรญ mobilnรญ aplikace. Pro mobilnรญ automatizaci pouลพijte Appium, kterรฝ rozลกiล™uje protokol WebDriver pro ล™รญzenรญ nativnรญch, hybridnรญch a mobilnรญch webovรฝch aplikacรญ na Android a iOS pomocรญ stejnรฉho znรกmรฉho API.

Nรกstroje umฤ›lรฉ inteligence vylepลกujรญ WebDriver samoopravnรฝmi lokรกtory, generovรกnรญm selektorลฏ ze snรญmkลฏ obrazovky, predikcรญ nestabilnรญch testลฏ a doporuฤovรกnรญm mezer v pokrytรญ. Platformy jako Testim, Mabl a Functionize vrstvenรฉ strojovรฉ uฤenรญ nad standardnรญm protokolem WebDriver.

Ano. Generativnรญ asistenti s umฤ›lou inteligencรญ, jako napล™รญklad ChatGPT, Copilot a CodeWhisperer dokรกลพe vytvรกล™et skripty WebDriver z poลพadavkลฏ v otevล™enรฉm jazyce nebo ze zaznamenanรฝch uลพivatelskรฝch tokลฏ. Inลพenรฝล™i vลกak musรญ pล™ed slouฤenรญm vรฝstupu zkontrolovat jeho pล™esnost, bezpeฤnost a udrลพovatelnost.

Shrลˆte tento pล™รญspฤ›vek takto: