top 10 selenium exceptions
Zpracování výjimek selenu WebDriver pomocí rámce zpracování výjimek - Selenium Tutorial # 19
Získání výjimky v automatizačním kódu je velmi běžné. „Výjimka“, jak toto slovo naznačuje, je zvláštní nebo neobvyklý případ.
Spuštění automatizačního kódu obvykle nemusí probíhat podle očekávání kvůli mnoha faktorům, které se podílejí na provádění, jako jsou problémy se stabilitou sítě, problémy s internetem, stabilita serveru atd. Mohli bychom získat výjimky kvůli nedostatečné čekací době nebo nesprávným syntaxím, parametrům atd.
V posledním tutoriálu WebDriver jsme se dozvěděli o 3 různých typech důležitých webových prvků, jako je Webové tabulky, rámečky a dynamické prvky a jejich manipulační mechanismy v selenovém písmu
Před pokračováním s Framework tutoriály v tomto Výcvik selenu série, zde v tomto tutoriálu se dozvíme typy výjimek a způsob zpracování výjimek ve skriptech Java a Selenium . Vývojáři / testeři používají rámec pro zpracování výjimek ke zpracování výjimky ve skriptech selenu.
Co se naučíte:
- Co je to výjimka?
- Výhody a nevýhody přístupu Vyvarujte se manipulace
- Typy výjimek v Javě a Selenu
- Zpracování výjimek
- Společné výjimky v selenu WebDriver
- Vyloučení a řešení běžných výjimek
- # 1) org.openqa.selenium.NoSuchElementException
- # 2) org.openqa.selenium.NoSuchWindowException
- # 3) org.openqa.selenium.NoSuchFrameException
- # 4) org.openqa.selenium.NoAlertPresentException
- # 5) org.openqa.selenium.InvalidSelectorException
- # 6) org.openqa.selenium.ElementNotVisibleException
- # 7) org.openqa.selenium.ElementNotSelectableException
- # 8) org.openqa.selenium.TimeoutException
- # 9) org.openqa.selenium.NoSuchSessionException
- # 10) org.openqa.selenium.StaleElementReferenceException
- Závěr
- Doporučené čtení
Co je to výjimka?
Výjimkou jsou události, kvůli nimž program Java náhle končí, aniž by poskytl očekávaný výstup. Java poskytuje rámec, kde může uživatel zpracovávat výjimky.
Proces zpracování výjimek se nazývá zpracování výjimek.
Výjimky je třeba řešit, protože narušují normální průběh provádění programu. Jedním z důležitých záměrů zpracování výjimek je zabránit tomuto přerušení a pokračovat v provádění programu. Někdy možná budete chtít provést několik sérií akcí při výskytu určité výjimky.
Když dojde k výjimce, vytvoří se objekt výjimky, který se technicky označuje jako „ Vyvolání výjimky “ a přidáme Zkus chytit bloky jako,
try { // Protected code } catch (ExceptionName e) { // Catch block }
# 1) Kus kódu, který by mohl vyvolat výjimku, je přidán do bloku Try.
#dva) Příkaz Catch zachytí výjimku a vezme ji jako parametr.
# 3) Když není vyvolána žádná výjimka, provede se příkaz try a nikoli příkaz catch.
Příklad : Když selže skript selenu kvůli špatnému lokátoru, měl by být vývojář schopen pochopit důvod selhání, čehož lze snadno dosáhnout, pokud je v programu správně zpracována výjimka.
Podle mých zkušeností je nejlepší pokusit se vyhnout se výjimkám WebDriveru, kdykoli je to možné, a zachytit skutečně výjimečné případy. Použijte try / catch k řešení věcí, které se pokazily a jsou mimo moji kontrolu.
Vyhněte se těm, které dokážu chytit ostatní!
Toto je nejlepší strategie, která pro mě fungovala.
Například, zvažte zkušební stránku, jejíž načítání na testovacím serveru trvá déle než obvykle. Při provádění akcí na této stránce dostáváme časté výjimky. Takže místo toho, abychom to pokaždé chytali, můžeme
- Přidejte příkaz čekání a pokuste se vyhnout výjimce
- Pomocí funkce „Try / Catch“ vyzkoušejte případ, kdy dojde ke skutečně výjimečnému případu
Tím se snižuje šance na výjimky.
Výhody a nevýhody přístupu Vyvarujte se manipulace
Výhody | Nevýhody |
---|---|
1) Tento přístup snižuje šance na získání výjimek. | 1) Zvyšuje řádky kódů, protože přidáváte další kód, abyste se vyhnuli výjimkám |
Pokud je výjimka stále zachycena, byla by 2) skutečně výjimečným případem, který stojí za kontrolu | 2) Měl by lépe porozumět rozhraní API webových ovladačů, příkazům a výjimkám |
Zkraťte dobu ladění. Automatizační kód je určen k vyhledání chyb a nechcete vidět příliš mnoho nežádoucích 3) výjimek a najít příčiny každé z nich | |
4) V bloku Úlovek řešíte více platných případů | |
5) Omezte falešná selhání | |
6) Jasnější zpráva |
V tomto tutoriálu budeme diskutovat Vyhněte se a zacházejte přístup k 10 nejčastějším výjimkám v Selenium WebDriver. Před tím se pojďme seznámit se základními bloky manipulace s výjimkami a bloky Try / Catch.
Typy výjimek v Javě a Selenu
Níže jsme popsali typy výjimek a různé způsoby, jak můžeme použít framework pro zpracování výjimek ve skriptech selenu.
Existují tři druhy výjimek:
- Zaškrtnutá výjimka
- Nezaškrtnutá výjimka
- Chyba
Hierarchie tříd výjimek a chyb:
# 1) Zaškrtnutá výjimka: Zaškrtnutá výjimka je zpracována během kompilace a dává chybu kompilace, pokud není zachycena a zpracována během kompilace.
Příklad : FileNotFoundException , IOException atd.
# 2) Nezaškrtnutá výjimka: V případě nezaškrtnuté výjimky kompilátor nemá mandát ke zpracování. Kompilátor ignoruje během kompilace.
Příklad : ArrayIndexoutOfBoundException
# 3) Chyba: Když je scénář fatální a program se nemůže zotavit, JVM vyvolá chybu. Chyby nelze zpracovat blokem try-catch. I když se uživatel pokusí zpracovat chybu pomocí bloku Try catch, nemůže se z chyby zotavit.
Příklad : Chyba tvrzení , OutOfMemoryError atd.
Zpracování výjimek
Zkuste a chyťte blok:
Zkus chytit bloky se obecně používají ke zpracování výjimek. Typ výjimky je deklarován v bloku catch, který se očekává. Když dojde k výjimce v bloku try, okamžitě ovládejte pohyby, které blokují.
Příklad :
try { br = new BufferedReader(new FileReader('Data')); } catch(IOException ie) { ie.printStackTrace(); }
V závislosti na typu výjimky může být pro jeden pokusný blok více bloků.
Příklad :
try { br = new BufferedReader(new FileReader('Data')); } catch(IOException ie) { ie.printStackTrace(); } catch(FileNotFoundException file){ file.printStackTrace(); }
hodí Výjimka:
hodí klíčové slovo v Javě se používá k vyvolání výjimky spíše než k jejímu zacházení. Všechny kontrolované výjimky mohou být vyvolány metodami.
Příklad :
public static void main(String() args) throws IOException { BufferedReader br=new BufferedReader(new FileReader('Data')); while ((line = br.readLine()) != null) { System.out.println(line); } }
Konečně blok:
Konečně , blok se spustí bez ohledu na provedení bloku try-catch a provede se ihned po dokončení bloku try / catch.
V zásadě lze zavřít soubor, připojení k databázi atd. V konečném bloku.
převodník z youtube na mp3, který funguje
Příklad :
try { br = new BufferedReader(new FileReader('Data')); } catch(IOException ie) { ie.printStackTrace(); } Finally { br.close(); }
Ve výše uvedeném příkladu BufferReader stream je uzavřen v konečne bloku. br.close () se vždy provede bez ohledu na provedení bloku try and catch.
Poznámka : konečně blok může existovat bez jakéhokoli bloku chycení. Blokování úlovků není nutné vždy.
Bloků úlovků může být mnoho, ale lze použít pouze jeden blok konečně.
Vrhací : Throwable je nadřazená třída pro chyby a výjimky. Obecně je obtížné zpracovat chyby v Javě. Pokud si programátor není jistý typem chyby a výjimky, doporučuje se použít třídu Throwable, která dokáže zachytit chybu i výjimku.
Příklad :
try { br = new BufferedReader(new FileReader('Data')); } catch (Throwable t) { t.printStackTrace(); }
Společné výjimky v selenu WebDriver
Selen má svůj vlastní soubor výjimek. Při vývoji selenových skriptů musí programátor tyto výjimky zpracovat nebo zrušit.
Níže uvádíme několik příkladů výjimek v selenu:
Všechny třídy výjimek za běhu v Selenium WebDriver spadají pod nadtřídu WebDriverException.
Ačkoli pod WebDriverException existuje mnoho tříd výjimek, běžně se zobrazují níže uvedené.
jak používat float v java
- NoSuchElementException
- NoSuchWindowException
- NoSuchFrameException
- NoAlertPresentException
- InvalidSelectorException
- ElementNotVisibleException
- ElementNotSelectableException
- TimeoutException
- NoSuchSessionException
- StaleElementReferenceException
Detaily :
ElementNotVisibleException : Pokud se selen pokusí najít prvek, ale prvek není na stránce viditelný
NoAlertPresentException : Pokud se uživatel pokusí zpracovat výstražné okno, ale výstraha není k dispozici.
NoSuchAttributeException : Při pokusu o získání hodnoty atributu, ale atribut není v modelu DOM k dispozici.
NoSuchElementException : Tato výjimka je způsobena přístupem k prvku, který není na stránce k dispozici.
WebDriverException : Výjimka nastane, když kód není schopen inicializovat WebDriver.
Vyloučení a řešení běžných výjimek
Pojďme diskutovat o přístupu Vyvarujte se a zacházejte s výše uvedenými výjimkami:
# 1) org.openqa.selenium.NoSuchElementException
Tato běžně viděná třída výjimek je podtřídou NotFoundException třída. Výjimka nastane, když WebDriver nemůže najít a najít prvky.
Obvykle se to stane, když tester zapíše nesprávný lokátor prvků v metodě findElement (By, by).
Vezměte v úvahu, že v níže uvedeném příkladu bylo správné ID pro textové pole „firstfield“, ale tester jej nesprávně uvedl jako „fistfield“. V takovém případě nemůže WebDriver najít prvek a org.openqa.selenium.NoSuchElementException bude hozen
driver.findElement(By.id('submit')).click(); Exception Handling: try { driver.findElement(By.id('submit')).click(); } catch (NoSuchElementException e)
V tomto případě je vyvolána výjimka, i když prvek není načten.
Vyhýbání se manipulaci : Zkuste vydat povel k čekání.
Příklad: Níže uvedený příkaz čekání čeká 10 sekund na přítomnost webového prvku s ID „odeslat“. Pak se to pokusí kliknout. Pokud je prvek k dispozici, ale kliknutí stále selže, je zachycena výjimka.
Používání zpožděného času je běžnou praxí v automatizaci testů k vytvoření pauzy mezi kroky. Přidáním Try / Catch zajistíme, že program bude pokračovat, i když čekání nemohlo pomoci.
try { WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); wait.Until(ExpectedConditions.presenceOfElementLocated(By.id('submit'))); try { driver.findElement(By.id('submit')).click(); } catch (WebDriverException e) { System.out.println(“An exceptional case.”); } } catch (TimeOutException e) { System.out.println(“WebDriver couldn’t locate the element”); }
# 2) org.openqa.selenium.NoSuchWindowException
NoSuchWindowException spadne pod NotFoundException třída. To je vyvoláno, když se WebDriver pokusí přepnout na neplatné okno.
Níže uvedený kód může vyvolat org.openqa.selenium.NoSuchWindowException, pokud popisovač okna neexistuje nebo jej nelze přepnout.
driver.switchTo (). window (handle_1);
Vyhýbání se manipulaci : Použili bychom okenní kliky, abychom získali sadu aktivních oken a poté na nich provedli akce.
V níže uvedeném příkladu se pro každou kliku okna přepne ovladač na. Proto se snížila šance na předání nesprávného parametru okna.
for (String handle : driver.getWindowHandles()) { try { driver.switchTo().window(handle); } catch (NoSuchWindowException e) { System.out.println(“An exceptional case”); } }
# 3) org.openqa.selenium.NoSuchFrameException
Když se WebDriver pokouší přepnout na neplatný snímek, NoSuchFrameException v rámci třídy NotFoundException je vyvolána.
Níže uvedený kód může vyvolat org.openqa.selenium.NoSuchFrameException, pokud rámec „frame_11“ neexistuje nebo není k dispozici.
driver.switchTo (). frame („frame_11“);
Zpracování výjimek:
try { driver.switchTo().frame('frame_11'); } catch (NoSuchFrameException e)
V tomto případě je vyvolána výjimka, i když není načten rámec.
Vyhýbání se manipulaci : Zkuste dát povel k čekání.
V níže uvedeném příkladu WebDriver čeká 10 sekund, než bude rámec k dispozici. Pokud je rámeček k dispozici a stále existuje výjimka, pak je zachycen.
try { WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); wait.Until(ExpectedConditions.frameToBeAvaliableAndSwitchToIt(frame_11)); try { driver.switchTo().frame('frame_11'); } catch (WebDriverException e) { System.out.println(“An exceptional case”); } } catch (TimeOutException e) { System.out.println(“WebDriver couldn’t locate the frame”); }
# 4) org.openqa.selenium.NoAlertPresentException
NoAlertPresentException pod NotFoundException je vyvolána, když se WebDriver pokusí přepnout na výstrahu, která není k dispozici.
org.openqa.selenium.NoAlertPresentException bude vyvoláno Pokud je pod automatizačním kódem volání operace přijetí () na třídě Alert (), když výstraha ještě není na obrazovce.
driver.switchTo (). alert (). accept ();
Zpracování výjimek:
try { driver.switchTo().alert().accept(); } catch (NoSuchAlertException e)
V tomto případě je vyvolána výjimka, i když se výstraha nenačte úplně.
Vyhýbání se manipulaci : Vždy používejte výslovné nebo plynulé čekání na určitý čas ve všech případech, kdy se očekává výstraha. Pokud je výstraha k dispozici a stále existuje výjimka, je zachycena.
try { WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); wait.Until(ExpectedConditions.alertIsPresent()); try { driver.switchTo().alert().accept(); } catch (NoAlertPresentException e) { System.out.println(“An exceptional case”); } } catch (TimeOutException e) System.out.println(“WebDriver couldn’t locate the Alert”); }
# 5) org.openqa.selenium.InvalidSelectorException
Tato podtřída NoSuchElementException třída nastane, když je selektor nesprávný nebo syntakticky neplatný. K této výjimce dochází běžně při použití vyhledávače XPATH.
Zvažte následující příklad:
clickXPathButtonAndWait („// tlačítko (@ type =‚ tlačítko ‘) (100)“);
To by hodilo InvalidSelectorExeption, protože syntaxe XPATH je nesprávná.
Vyhýbání se a manipulace : Abychom tomu zabránili, měli bychom zkontrolovat použitý lokátor, protože lokátor je pravděpodobně nesprávný nebo nesprávná syntaxe. Použití Firebug k nalezení xpath může tuto výjimku snížit.
Níže uvedený kód ukazuje, jak to zvládnout pomocí Try / Catch
try { clickXPathButtonAndWait('//button(@type='button')'); } catch (InvalidSelectorException e) { }
# 6) org.openqa.selenium.ElementNotVisibleException
ElementNotVisibleException třída je podtřídou ElementNotInteractableException třída. Tato výjimka je vyvolána, když se WebDriver pokusí provést akci s neviditelným webovým prvkem, se kterým nelze pracovat. To znamená, že webový prvek je ve skrytém stavu.
Například, v níže uvedeném kódu, pokud je typ tlačítka s ID „odeslat“ „skrytý“ v HTML, org.openqa.selenium.ElementNotVisibleException bude hozen.
driver.findElement(By.id('submit')).click(); Exception Handling: try { driver.findElement(By.id('submit')).click(); } catch (ElementNotVisibleException e)
V tomto případě je vyvolána výjimka, i když se stránka nenačetla úplně.
Vyhýbání se manipulaci : Existují dva způsoby, jak to udělat. Můžeme buď použít čekání na úplné získání prvku.
Níže uvedený kód čeká na prvek 10 sekund. Pokud je prvek viditelný a přesto je vyvolána výjimka, je chycen.
try { WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); wait.Until(ExpectedConditions.visibilityOfElementLocated(By.id(”submit”)); try { driver.findElement(By.id('submit')).click(); } catch (WebDriverException e) { System.out.println(“Exceptional case”); } } catch (TimeOutException e) System.out.println(“WebDriver couldn’t find this element visible”); }
# 7) org.openqa.selenium.ElementNotSelectableException
Tato výjimka spadá pod InvalidElementStateException třída . ElementNotSelectableException označuje, že webový prvek je na webové stránce, ale nelze jej vybrat.
Například, níže uvedený kód může vyvolat ElementNotSelectableException, pokud je ID „swift“ zakázáno.
Rozbalovací nabídka Select = new Select (driver.findElement (By.id (“swift”)));
Zpracování výjimek:
Snaž se {
Rozbalovací nabídka Select = new Select (driver.findElement (By.id (“swift”)));
} catch (ElementNotSelectableException e)
V tomto případě je vyvolána výjimka, i když se prvek po chvíli aktivuje.
Vyhýbání se manipulaci : Můžeme přidat příkaz čekání, abychom počkali, dokud na prvek nebude možné kliknout. Pokud stále existuje výjimka, je chycena.
try { WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); wait.Until(ExpectedConditions. elementToBeClickable(By.id(”swift”)); try { Select dropdown = new Select(driver.findElement(By.id('swift'))); } catch (WebDriverException e) { System.out.println(“Exceptional case”); } } catch (TimeOutException e) System.out.println(“WebDriver found that this element was not selectable.”); }
# 8) org.openqa.selenium . TimeoutException
K této výjimce dochází, když dokončení příkazu trvá déle než doba čekání. Waits se používají hlavně ve WebDriveru, aby se zabránilo výjimce ElementNotVisibleException.
Někdy se testovací stránka nemusí načíst úplně před dalším příkazem v programu. Pokud se WebDriver pokusí najít prvek na webové stránce před úplným načtením stránky, je vyvolána výjimka ElementNotVisibleException. Aby se této výjimce zabránilo, přidávají se příkazy čekání.
Pokud se však komponenty nenačtou ani po čekání, výjimka org.openqa.selenium . TimeoutException bude hozen.
driver.manage (). timeouts (). implicitlyWait (10, TimeUnit.SECONDS);
driver.get („https://www.softwaretestinghelp.com“);
Ve výše uvedeném programu je přidáno implicitní čekání 10 sekund. Pokud stránka www.softwaretestinghelp.com nenačte se za 10 sekund, bude vyvolána TimeoutException.
Vyhýbání se a manipulace : Abychom tomu zabránili, můžeme ručně zkontrolovat průměrnou dobu načítání stránky a upravit čekání
Nebo můžeme přidat explicitní čekání pomocí JavaScriptu, dokud se stránka nenačte.
V níže uvedeném příkladu se používá exekutor jazyka JavaScript. Po navigaci po stránce voláme po dobu 20 sekund JavaScript document.readyState, dokud se nevrátí „Complete“.
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30)); wait.until(webDriver -> ((JavascriptExecutor)webDriver).executeScript('return document.readyState').equals('complete')); driver.get('https://www.softwaretestinghelp.com');
# 9) org.openqa.selenium.NoSuchSessionException
Tato výjimka je vyvolána, když je metoda volána po ukončení prohlížeče pomocí WebDriver.quit (). K tomu může dojít také kvůli problémům s webovým prohlížečem, jako jsou pády, a WebDriver nemůže pomocí instance ovladače spustit žádný příkaz.
nejlepší webové stránky pro sledování anime dabovaného
Chcete-li zobrazit tuto výjimku, lze provést níže uvedený kód.
driver.quit ()
Rozbalovací nabídka Select = new Select (driver.findElement (By.id (“swift”)));
Vyhýbání se a manipulace : Ke spuštění testovacích skříněk Selenium Webdriver vždy vyberte nejnovější stabilní verzi prohlížeče.
Tuto výjimku lze snížit použitím driver.quit () po dokončení všech testů. Nepokoušejte se je používat po každém testovacím případu. To může vést k problémům, když je instance ovladače nulová a nadcházející testovací případy se ji pokusí použít bez inicializace.
Níže uvedený kód vytvoří instanci WebDriver v anotaci @BeforeSuite TestiNG a zničí ji v anotaci @AfterSuite TestiNG
@BeforeSuite public void setUp() throws MalformedURLException { WebDriver driver = new FirefoxDriver(); } @AfterSuite public void testDown() { driver.quit(); }
# 10) org.openqa.selenium.StaleElementReferenceException
Tato výjimka říká, že webový prvek již na webové stránce není.
Tato chyba není stejná jako ElementNotVisibleException.
StaleElementReferenceException je vyvolána, když byl objekt pro konkrétní webový prvek vytvořen v programu bez jakýchkoli problémů a nicméně; tento prvek již v okně není. To se může stát, kdyby došlo k
- Navigace na jinou stránku
- DOM se obnovil
- Spínač rámu nebo okna
WebElement firstName = driver.findElement (By.id („křestní jméno“));
driver.switchTo (). window (Child_Window);
element.sendKeys („Aaron“);
Ve výše uvedeném kódu byl vytvořen objekt firstName a poté bylo přepnuto okno. Poté se WebDriver pokusí do pole formuláře zadat „Aaron“. V tomto případě je vyvolána výjimka StaleElementReferenceException.
Vyhýbání se a manipulace : Potvrďte, že se snažíme provést akci ve správném okně. Abychom se vyhnuli problémům způsobeným obnovením DOM, můžeme použít Dynamic Xpath
Pojďme si promluvit o dalším příkladu.
Řekněte „id“ pole uživatelského jména je „username_1“ a XPath bude // * (@ id = ‘firstname_1?) . Když stránku znovu otevřete, může se „id“ změnit na „ 'jméno _11 “. V tomto případě test selže, protože WebDriver nemohl prvek najít. V tomto případě bude vyvolána výjimka StaleElementReferenceException.
V tomto případě můžeme použít dynamickou xpath jako,
try { driver.findElement(By.xpath(“//*(contains(@id,firstname’))”)).sendKeys(“Aaron”); } catch (StaleElementReferenceException e)
Ve výše uvedeném příkladu se používá dynamický XPATH a pokud je výjimka stále nalezena, je chycena.
Závěr
Zpracování výjimek je nezbytnou součástí každého programu Java i skriptu selenu. Můžeme vytvořit robustní a optimální kód podle zpracování výjimky chytrým způsobem . Osvědčeným postupem je také zpracovávat výjimky ve skriptu, který vám poskytne lepší zprávu, když program z jakéhokoli důvodu selže.
Zde jsme se pokusili pokrýt proces a rámec zpracování výjimek, které je nutné implementovat do selenových skriptů.
Pamatujte, že není povinné vždy zpracovávat výjimku v a Zkus chytit blok. Můžete také vyvolat výjimku v závislosti na požadavku ve skriptu.
Výjimka by neměla být ignorována, protože narušuje provádění programu. V tomto kurzu jsme prošli různými výjimkami a způsoby, jak snížit šance na jejich získání prostřednictvím ručních kontrol a kódů.
Přidáním čekání lze ovládat některé případy, jako jsou například „NoSuchElementException“, „ElementNotFoundException“, „ElementNotVisibleException“.
Další výuka č. 20 : V nadcházejícím tutoriálu bychom diskutovali o různé typy testovacích rámců k dispozici . Rovněž bychom studovali výhody a nevýhody používání rozvinutého rámcového přístupu při testování automatizace. Podrobně bychom diskutovali o testovacím datovém rámci.
Zašlete prosím své dotazy týkající se zpracování výjimek v Selenium WebDriver, pokud nějaké máte.
Doporučené čtení
- Výjimky Java a zpracování výjimek s příklady
- Jak zpracovat upozornění / vyskakovací okna v Selenium WebDriver - Selenium Tutorial # 16
- Výukový program AutoIt - Stažení, instalace a základní skript AutoIt
- Cucumber Selenium Tutorial: Cucumber Java Selenium WebDriver Integration
- Integrace selenu s JMeter
- Úvod do selenu WebDriver - Selenium Tutorial # 8
- 30+ nejlepších návodů na selen: Naučte se selen se skutečnými příklady
- Nabídka pracovních míst na volné noze pro odborníky na selen