geckodriver selenium tutorial
Výukový program GeckoDriver Selenium: Naučte se používat ovladač Gecko (loutka) v selenu
Abychom pochopili, co je GeckoDriver, musíme nejprve vědět o Gecko a motoru webového prohlížeče. Tento výukový program pokrývá téměř všechny funkce spojené s GeckoDriverem, čímž vám poskytuje kompletní přehled.
Nejprve tedy dejte vědět, co je Gecko a co je to modul webového prohlížeče?
Co se naučíte:
- Co je to Gecko?
- Co je to modul webového prohlížeče?
- Co je GeckoDriver?
- Proč selen potřebuje GeckoDriver?
- Jak používat GeckoDriver v projektu Selenium?
- GeckoDriver a TestNG
- Kroky k přidání cesty do proměnné prostředí PATH systému
- Problémy bez ovladače Gecko
- Další informace o GeckoDriver
- Závěr
- Doporučené čtení
Co je to Gecko?
Gecko je modul webového prohlížeče. Existuje několik aplikací, které vyžadují Gecko. Konkrétně jde o aplikace vyvíjené Mozilla Foundation a Mozilla Corporation. Gecko je také potřeba mnoha open source softwarových projektů. Gecko je napsán v C ++ a JavaScriptu.
Nejnovější verze jsou také napsány v Rustu. Gecko je bezplatný a otevřený zdrojový modul webového prohlížeče.
Co je to modul webového prohlížeče?
Engine webového prohlížeče není nic jiného než softwarový program. Hlavní funkcí tohoto programu je shromažďování obsahu (jako HTML, XML, obrázky) a formátování informací (jako CSS) a zobrazování tohoto formátovaného obsahu na obrazovce. Engine webového prohlížeče se také nazývá Layout Engine nebo Rendering Engine.
Aplikace jako webové prohlížeče, e-mailoví klienti, čtečky elektronických knih, systémy online nápovědy atd. Vyžadují zobrazení webového obsahu. A pro zobrazení webového obsahu je vyžadován modul webového prohlížeče, který je součástí všech těchto aplikací. Pro každý webový prohlížeč existují různé motory webového prohlížeče.
Následující tabulka ukazuje webové prohlížeče a jaké motory webového prohlížeče používají.
Gecko běží na následujícím operačním systému bez emulace:
- Okna
- Operační Systém Mac
- Linux
- BSD
- Unix
Nelze jej spustit v operačním systému Symbian OS.
Co je GeckoDriver?
GeckoDriver je spojovací odkaz na prohlížeč Firefox pro váš skripty v selenu . GeckoDriver je proxy, který pomáhá komunikovat s prohlížeči založenými na Gecko (např. Firefox), pro které poskytuje HTTP API.
Proč selen potřebuje GeckoDriver?
Firefox (verze 47 a vyšší) v něm provedl určité změny az určitých bezpečnostních důvodů neumožňuje žádnému ovladači třetí strany přímou interakci s prohlížeči. Selenium2 proto nemůžeme používat s nejnovějšími verzemi Firefoxu. Takže potřebujeme selen3.
Selenium3 má ovladač loutek. Selenium3 může přímo komunikovat s prohlížečem Firefox pomocí serveru proxy, což není nic jiného než GeckoDriver.
Jak používat GeckoDriver v projektu Selenium?
- Uvažujme, že máte nejnovější verzi Selenium WebDriver a prohlížeč Firefox.
- Poté si stáhněte GeckoDriver z tady . Později vyberte verzi, která je vhodná pro váš počítač.
- Extrahovat soubory z komprimované složky
- Přidejte do projektu odkazy na Selenium3 libs prostřednictvím - Klikněte pravým tlačítkem na projekt => Cesta sestavení => Konfigurovat cestu sestavení => Knihovny => Přidat externí nádoby.
- Vybrat Lib folder => Klikněte na Clt + A => klikněte na Otevřít .
- Po vás klikněte na otevřít , uvidíte následující okno:
- Poté klikněte na OK.
- Nyní napíšeme náš kód a pomocí vlastnosti systému určíme cestu GeckoDriver.
- Přidejte do kódu následující řádek:
System.setProperty(“webdriver.gecko.driver”,”Path of the GeckoDriver file”).
** ( Jak zkopírovat adresu extrahovaného souboru. - (Stiskněte klávesu „Shift“ na klávesnici a klepněte pravým tlačítkem myši na soubor, zobrazí se možnost. Poté „Kopírovat adresu souboru“.))
** ( V této kopii vložené cesty se ujistěte, že existuje dvojité zpětné lomítko, jinak bude mít kód chybu syntaxe.)
Vezměme si příklad
Příklad
Zde je jen jednoduchý skript, kde otevřeme webovou stránku Google v prohlížeči Firefox a ověříme její název.
Kód1:
import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; publicclass First_Class { publicstaticvoid main(String() args) { System.setProperty('webdriver.gecko.driver','E:\GekoDriver\geckodriver-v0.15.0-win64\geckodriver.exe'); WebDriver driver=new FirefoxDriver(); driver.get('https://www.google.com/'); driver.manage().window().maximize(); String appTitle=driver.getTitle(); String expTitle='Google'; if (appTitle.equals (expTitle)){ System.out.println('Verification Successfull'); } else{ System.out.println('Verification Failed'); } driver.close(); System.exit(0); } }
Porozumění Kodexu
# 1) import org.openqa.selenium.WebDriver- Zde importujeme všechny odkazy na rozhraní WebDriver. Později je toto rozhraní WebDriver nutné k vytvoření instance nového prohlížeče.
# 2) import org.openqa.selenium.firefox.FirefoxDriver- Zde importujeme všechny odkazy na třídu FirefoxDriver.
# 3) setProperty (klíč řetězce, hodnota řetězce) - Zde nastavujeme vlastnost systému zadáním názvu vlastnosti, která se nazývá Key, a její cesty, která se nazývá Value.
Klíč -Název vlastnosti systému, tj. webdriver.gecko.driver .
Hodnota - Adresa exe souboru ovladače Gecko.
# 4) Ovladač WebDriver = nový FirefoxDriver () - V tomto řádku kódu vytváříme referenční proměnnou „driver“ WebDriveru a tato referenční proměnná je spuštěna pomocí třídy FirefoxDriver. Profil Firefoxu bez rozšíření a pluginů bude spuštěn s instancí Firefoxu.
# 5) get („URL“) - Pomocí této metody Get můžeme otevřít zadanou adresu URL v prohlížeči. Tato metoda Get se nazývá pomocí referenční proměnné WebDriver, tj. Ovladače. Řetězec je předán metodě Get, což znamená, že naše adresa URL aplikace je předána do této metody Get.
# 6) manage (). Window (). Maximize () - Pomocí tohoto řádku kódu maximalizujeme okno prohlížeče. Jakmile prohlížeč otevře zadanou adresu URL, je pomocí tohoto řádku maximalizována.
# 7) getTitle () - Pomocí tohoto řádku kódu budeme moci najít název webové stránky. Tato metoda se také nazývá pomocí referenční proměnné WebDriver „driver“. Tento název ukládáme do proměnné řetězce „appTitle“.
# 8) Srovnání - Zde porovnáváme appTitle (který projde driver.getTitle () metoda) a expTitle (což je „Google“) pomocí příkazu If. Je to jen jednoduché prohlášení If-else. Pokud je splněna podmínka „Pokud“, tiskneme zprávu „Ověření bylo úspěšné“, v opačném případě budeme tisknout zprávu „Ověření se nezdařilo“.
if (appTitle.equals (expTitle)) { System.out.println ('Verification Successful'); } else { System.out.println('Verification Failed'); }
# 9) driver.close () - Tento řádek kódu zavře prohlížeč. Tento řádek zavírá pouze aktuální okno.
# 10) System.exit (0) - Tato metoda kódu se používá k ukončení běhu Java Virtual Machine. Doporučuje se tedy zavřít všechna otevřená okna nebo soubory před tímto řádkem.
GeckoDriver a TestNG
V kódu není velký rozdíl, ale zde přidávám kód pouze pro vaši potřebu.
PŘÍKLAD:
Pojďme k příkladu. Naším příkladem je otevřít webovou stránku Google.com, získat její název a vytisknout ji.
Kód2:
import org.testng.annotations.Test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; publicclass TstNG { @Test publicvoid f() { System.setProperty('webdriver.gecko.driver','E:\GekoDriver\geckodriver-v0.15.0-win64\geckodriver.exe'); WebDriver driver=new FirefoxDriver(); driver.get('https://www.google.com/'); driver.manage().window().maximize(); String appurl=driver.getTitle(); System.out.println(appurl); driver.close(); // System.exit(0); } }
Body, které si musíte zapamatovat při psaní kódu TestNG:
# 1) Použijte metodu System.setProperty (klíč String, hodnota řetězce) uvnitř funkce f () stejně jako v předchozím příkladu. V tomto příkladu jsme to napsali do hlavní funkce. V TestNG však nejsou žádné funkce main (). Pokud jej napíšete mimo funkci, zobrazí se syntaktická chyba.
#dva) Druhou nejdůležitější věcí k zapamatování je System.exit (0). Tento řádek kódu není nutné do skriptu TestNG přidávat. Existuje jeden důvod, který je - po spuštění skriptu TestNG se vygeneruje výstupní složka, kde můžete zobrazit generované zprávy a výsledek, pokud do svého skriptu přidáte System.exit (0), tato složka (výstupní složka) se nedostane vygenerovány a nebudete moci zobrazit přehledy.
Kroky k přidání cesty do proměnné prostředí PATH systému
- V systému Windows klikněte pravým tlačítkem na Tento počítač nebo Tento počítač.
- Vyberte Vlastnosti.
- Vyberte pokročilé nastavení systému.
- Klikněte na tlačítko Proměnné prostředí.
- Ze systémových proměnných vyberte PATH.
- Klikněte na tlačítko Upravit.
- Klikněte na tlačítko Nové
- Vložte cestu k souboru GeckoDriver.
- Klikněte na OK.
Problémy bez ovladače Gecko
Mohli byste čelit některým problémům, jako jsou níže uvedené.
# 1) Pokud používáte starou verzi Firefoxu a Selenium3, dostanete následující výjimku:
jak otevřít soubor .java
Výjimka ve vlákně „main“ java.lang.IllegalStateException
#dva) Pokud používáte nejnovější verzi Firefoxu a starou verzi Selenium, dostanete následující výjimku:
org.openqa.selenium.firefox.NotConnectedException : Nelze se připojit k hostiteli 127.0.0.1 na portu 7055 po 45000 ms
# 3) Pokud používáte nejnovější verzi prohlížeče Firefox a WebDriver, ale nepoužíváte GeckoDriver, zobrazí se následující výjimka:
Výjimka ve vlákně „main“ java.lang.IllegalStateException: Cesta k spustitelnému souboru ovladače musí být nastavena vlastností systému webdriver.gecko.driver; Další informace viz tady .Nejnovější verzi lze stáhnout z tady .
Další informace o GeckoDriver
Jak víme, GeckoDriver je proxy, který pomáhá komunikovat s prohlížeči založenými na Gecko (např. Firefox), pro které poskytuje HTTP API.
Tomuto rozhraní HTTP API lze porozumět pomocí protokolu WebDriver. V protokolu WebDriver jsou některé uzly, které zahrnují Local end, Remote end, Intermediary node a Endpoint node. Komunikace mezi těmito uzly je popsána v protokolu WebDriver.
Místní konec je na straně klienta protokolu WebDriver. Vzdálený konec znamená na straně serveru protokol WebDriver. Uzel zprostředkovatel plní roli proxy. Uzel koncového bodu je uveden v platnost uživatelským agentem nebo podobným programem.
Příkazy a odpovědi odeslané WebDriverem do GeckoDriveru jsou přeloženy do protokolu Marionette a poté přeneseny do Marionette Driver pomocí GeckoDriver. Na závěr tedy říkáme, že GeckoDriver funguje jako proxy mezi těmito dvěma WebDriver a Marionette.
Loutka je rozdělena na 2 části, což je serverová část a klientská část. Příkazy odesílané klientskou částí jsou prováděny serverovou částí.
Tato práce s prováděním příkazu se provádí uvnitř prohlížeče. Marionette není nic jiného než kombinace gecko komponenty (což je server Marionette) a vnější komponenty (která se nazývá jako Marionette Client). GeckoDriver je napsán v programovacím jazyce Rust.
Závěr
GeckoDriver je prostředním faktorem mezi vašimi selenovými skripty a prohlížeči založenými na Gecko, jako je Firefox.
GeckoDriver je proxy pro komunikaci s prohlížeči založenými na Gecko ( Např. Firefox). Firefox (verze 47 a vyšší) provedl několik změn, což vedlo k prevenci podpory přímých interakcí ovladačů třetích stran s prohlížeči.
To je hlavní důvod, proč musíme používat GeckoDriver. Nejjednodušší způsob, jak použít GeckoDriver ve vašem skriptu, je implementovat použití Vlastnost System.set. (System.setProperty („webdriver.gecko.driver“, „Cesta k souboru ovladače Gecko“))).
Jste v GeckoDriver nováčkem? Naučili jste se dnes něco nového v tomto GeckoDriver Selenium? Nebo máte s námi něco zajímavého o GeckoDriveru? Neváhejte vyjádřit své myšlenky v sekci komentáře níže.
Doporučené čtení
- Cucumber Selenium Tutorial: Cucumber Java Selenium WebDriver Integration
- Úvod do Selenium WebDriver - Selenium Tutorial # 8
- Výukový program pro vyhledání prvku selen pomocí textu s příklady
- Implementace našeho prvního skriptu WebDriver - výuka selenu WebDriver # 10
- Jak zacházet s výstrahami / vyskakovacími okny v Selenium WebDriver - Selenium Tutorial # 16
- Kompletní nastavení a instalace WebDriveru s Eclipse - výuka selenu č. 9
- Výukové programy pro zatmění do hloubky pro začátečníky
- Efektivní scénáře selenu a řešení potíží - Scénář selenu č. 27