top 10 selenium exceptions
Ravnanje z izjemo Selenium WebDriver z uporabo ogrodja za ravnanje z izjemami - Vadnica Selenium # 19
Pridobivanje izjeme v avtomatizacijski kodi je zelo pogosto. „Izjema“, kot navaja beseda, je poseben ali občasen primer.
Izvedba avtomatizacijske kode se običajno ne bo izvedla po pričakovanjih zaradi številnih dejavnikov, ki sodelujejo pri izvedbi, kot so težave z stabilnostjo omrežja, težave z internetom, stabilnost strežnika itd. Izjeme lahko dobimo zaradi premajhnega čakalnega časa ali nepravilnih sintaks, parametrov itd.
V zadnji vadnici WebDriver smo spoznali 3 različne vrste pomembnih spletnih elementov, kot so Spletne tabele, okvirji in dinamični elementi in mehanizmi njihovega ravnanja v scenariju selena
Preden nadaljujete z vajami Framework v tem Trening selena v tej vadnici bomo izvedeli več o tem vrste izjem in kako ravnati z izjemami v skriptih Java in Selenium . Razvijalci / preizkuševalci uporabljajo ogrodje za ravnanje z izjemami za obdelavo izjeme v skriptih selena.
Kaj se boste naučili:
- Kaj je izjema?
- Prednosti in slabosti pristopa Avoid-Handle
- Vrste izjem v Javi in Selenu
- Ravnanje z izjemami
- Pogoste izjeme v programu Selenium WebDriver
- Izogibanje in obravnavanje pogostih izjem
- # 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
- Zaključek
- Priporočeno branje
Kaj je izjema?
Izjema so dogodki, zaradi katerih se program java nenadoma konča, ne da bi pričakoval rezultate. Java ponuja ogrodje, v katerem lahko uporabnik obravnava izjeme.
Postopek obravnave izjem se imenuje obdelava izjem.
Izjeme je treba obravnavati, ker prekinejo običajni potek izvajanja programa. Eden od pomembnih namenov obravnave izjem je preprečiti to prekinitev in nadaljevati izvajanje programa. Včasih boste morda želeli izvesti vrsto dejanj ob pojavu določene izjeme.
Ko pride do izjeme, se ustvari objekt izjeme, ki se tehnično imenuje „ Metanje izjeme “ in dodajamo Poskusite / ujemite bloki kot,
try { // Protected code } catch (ExceptionName e) { // Catch block }
# 1) Del kode, ki lahko povzroči izjemo, je dodan v blok Poskus.
#two) Stavek Catch ujame izjemo in jo vzame kot parameter.
# 3) Ko se ne vrne nobena izjema, se izvede stavek try in ne stavek catch.
Primer : Ko skrivnost selena ne uspe zaradi napačnega lokatorja, mora razvijalec razumeti razlog za napako in to je mogoče enostavno doseči, če v programu pravilno obravnavamo izjemo.
Po mojih izkušnjah je najbolje, da se poskušamo izogniti izjemam WebDriver, kadar je to mogoče, in ujeti resnično izjemne primere. Uporabite poskus / ulov za ravnanje s stvarmi, ki gredo narobe in so zunaj mojega nadzora.
Izogibajte se tistim, ki jih lahko ujamem druge!
To je najboljša strategija, ki mi je uspela.
Na primer, razmislite o testni strani, ki traja več kot običajno, da se naloži na testni strežnik. Med izvajanjem dejanj na tej strani bomo dobili pogoste izjeme. Torej, namesto da bi to vsakič le ujeli, lahko
- Dodajte ukaz za čakanje in se poskusite izogniti izjemi
- Za primer, če je prišlo do res izjemnega primera, uporabite „Poskusi / ujemi“
S tem se zmanjšajo možnosti za izjeme.
Prednosti in slabosti pristopa Avoid-Handle
Prednosti | Slabosti |
---|---|
1) Ta pristop zmanjšuje možnosti za izjeme. | 1) Poveča vrstice kod, ker dodate dodatno kodo, da se izognete izjemam |
Če se izjema še vedno ujame, bi bil to 2) zares izjemen primer, ki ga je vredno preveriti | 2) Moral bi bolje razumeti API za spletne gonilnike, ukaze in izjeme |
Skrajšajte čas za odpravljanje napak. Koda za avtomatizacijo je namenjena iskanju napak in ne želite videti preveč neželenih 3) izjem in poiskati razloge za vsako od njih | |
4) V bloku Catch obravnavate bolj veljavne primere | |
5) Zmanjšajte napačne napake | |
6) Jasnejše poročilo |
V tej vadnici bomo razpravljali Izogibajte se in ravnajte 10 najpogostejših izjem v programu Selenium WebDriver. Pred tem pa si oglejmo osnovno razumevanje blokov za obravnavo izjem in poskus / ulov.
Vrste izjem v Javi in Selenu
Spodaj smo opisali vrste izjem in različne načine, kako lahko uporabimo ogrodje za ravnanje z izjemami v skriptih selena.
Obstajajo tri vrste izjem:
- Označena izjema
- Neključena izjema
- Napaka
Hierarhija razredov izjem in napak:
# 1) Označena izjema: Označena izjema se obravnava v času prevajanja in daje napako pri prevajanju, če ni zajeta in obdelana v času prevajanja.
Primer : FileNotFoundException , IOException itd.
# 2) Neključena izjema: V primeru nepreverjene izjeme prevajalnik ne pooblasti za obdelavo. Prevajalnik med prevajanjem prezre.
Primer : ArrayIndexoutOfBoundException
# 3) Napaka: Ko je scenarij usoden in program ne more obnoviti, JVM vrne napako. Bloka try-catch ne more obravnavati napak. Tudi če uporabnik poskuša napako obravnavati z uporabo bloka Poskusi ulov, se napake ne more obnoviti.
Primer : Napaka pri trditvi , OutOfMemoryError itd.
Ravnanje z izjemami
Poskusite in ulovite blok:
poskusite ujeti bloki se običajno uporabljajo za obdelavo izjem. Vrsta izjem je navedena v bloku ulova, ki naj bi prišel. Ko pride do izjeme v bloku try, se nadzor takoj premakne na catch block.
Primer :
try { br = new BufferedReader(new FileReader('Data')); } catch(IOException ie) { ie.printStackTrace(); }
Za en poskusni blok je lahko več blokov ulova, odvisno od vrste izjeme.
Primer :
try { br = new BufferedReader(new FileReader('Data')); } catch(IOException ie) { ie.printStackTrace(); } catch(FileNotFoundException file){ file.printStackTrace(); }
meti Izjema:
meti Ključna beseda v javi se uporablja za vrnitev izjeme in ne za obdelavo. Vse preverjene izjeme lahko vržemo z metodami.
Primer :
public static void main(String() args) throws IOException { BufferedReader br=new BufferedReader(new FileReader('Data')); while ((line = br.readLine()) != null) { System.out.println(line); } }
končno blok:
končno , blok se izvede ne glede na izvedbo bloka try-catch in se izvede takoj po zaključku bloka try / catch.
V bistvu zapiranje datotek, povezava z bazo podatkov itd.
Primer :
try { br = new BufferedReader(new FileReader('Data')); } catch(IOException ie) { ie.printStackTrace(); } Finally { br.close(); }
V zgornjem primeru je BufferReader tok je zaprt v končno bloku. br.close () se bo vedno izvedel ne glede na izvedbo bloka try and catch.
Opomba : Končno blok lahko obstaja brez bloka ulova. Ni nujno, da imate vedno blok catch.
Blokov ulova je lahko veliko, lahko pa uporabimo le en končni blok.
Mečljivo : Throwable je nadrejeni razred za napake in izjeme. Na splošno je v javi težko obvladovati napake. Če programer ni prepričan o vrsti napake in izjemi, je priporočljivo uporabiti razred Throwable, ki lahko zajame tako napako kot izjemo.
Primer :
try { br = new BufferedReader(new FileReader('Data')); } catch (Throwable t) { t.printStackTrace(); }
Pogoste izjeme v programu Selenium WebDriver
Selen ima svoj niz izjem. Med razvijanjem skriptov selena mora programer te izjeme obravnavati ali odstraniti.
Spodaj je nekaj primerov izjem v selenu:
Vsi izvajalni razredi v programu Selenium WebDriver spadajo pod nadrazred WebDriverException.
Čeprav je v programu WebDriverException veliko razredov izjem, pogosto vidimo spodnje.
- NoSuchElementException
- NoSuchWindowException
- NoSuchFrameException
- NoAlertPresentException
- InvalidSelectorException
- ElementNotVisibleException
- ElementNotSelectableException
- TimeoutException
- NoSuchSessionException
- StaleElementReferenceException
Podrobnosti :
ElementNotVisibleException : Če selen poskuša najti element, vendar element ni viden na strani
NoAlertPresentException : Če uporabnik poskuša obdelati opozorilno polje, vendar opozorilo ni prisotno.
NoSuchAttributeException : Medtem ko poskušam pridobiti vrednost atributa, vendar atribut ni na voljo v DOM-u.
NoSuchElementException : Ta izjema je posledica dostopa do elementa, ki ni na voljo na strani.
WebDriverException : Izjema pride, kadar koda ne more inicializirati WebDriverja.
Izogibanje in obravnavanje pogostih izjem
Pogovorimo se o pristopu Izogni se in ravnaj za zgoraj omenjene izjeme:
# 1) org.openqa.selenium.NoSuchElementException
Ta pogosto opaženi razred izjem je podrazred NotFoundException razred. Izjema se zgodi, ko WebDriver ne more najti in najti elementov.
Običajno se to zgodi, ko tester v metodo findElement (By, by) napiše napačen lokator elementov.
Upoštevajte, da je bil v spodnjem primeru pravilen ID za besedilno polje 'firstfield', tester pa ga je napačno omenil kot 'fistfield'. V tem primeru WebDriver ne more najti elementa in org.openqa.selenium.NoSuchElementException bo vržen
driver.findElement(By.id('submit')).click(); Exception Handling: try { driver.findElement(By.id('submit')).click(); } catch (NoSuchElementException e)
V tem primeru se izjema vrže tudi, če element ni naložen.
Izogibanje in ravnanje z njimi : Poskusite dati ukaz za čakanje.
Primer: Spodnji ukaz za čakanje čaka 10 sekund na prisotnost spletnega elementa z id 'submit'. Nato ga skuša klikniti. Če je element na voljo, vendar klik še vedno ne uspe, se ujame izjema.
Uporaba zakasnjenega časa je običajna praksa pri avtomatizaciji preskusov, da se med koraki ustvari premor. Z dodajanjem poskusa / ulova zagotovimo, da se program nadaljuje, tudi če čakanje ni moglo pomagati.
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 pride pod NotFoundException razred. To se vrže, ko WebDriver poskuša preklopiti na neveljavno okno.
Spodnja koda lahko vrže org.openqa.selenium.NoSuchWindowException, če ročaj okna ne obstaja ali ni na voljo za preklop.
driver.switchTo (). window (handle_1);
Izogibanje in ravnanje z njimi : Uporabili bi okenske kljuke, da bi dobili nabor aktivnih oken in nato izvedli dejanja na istem.
V spodnjem primeru se za vsak ročaj okna izvede preklop gonilnika na. Zato se možnosti za napačen parameter okna zmanjšajo.
for (String handle : driver.getWindowHandles()) { try { driver.switchTo().window(handle); } catch (NoSuchWindowException e) { System.out.println(“An exceptional case”); } }
# 3) org.openqa.selenium.NoSuchFrameException
Ko WebDriver poskuša preklopiti na neveljaven okvir, se vrne NoSuchFrameException pod razredom NotFoundException.
Spodnja koda lahko vrže org.openqa.selenium.NoSuchFrameException, če okvir 'frame_11' ne obstaja ali ni na voljo.
driver.switchTo (). frame (“frame_11”);
Obravnava izjem:
try { driver.switchTo().frame('frame_11'); } catch (NoSuchFrameException e)
V tem primeru se izjema vrže tudi, če okvir ni naložen.
Izogibanje in ravnanje z njimi : Poskusite dati ukaz za čakanje.
V spodnjem primeru WebDriver čaka 10 sekund, da bo okvir na voljo. Če je okvir na voljo in še vedno obstaja izjema, je ujet.
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 Spodaj NotFoundException vrže se, ko WebDriver poskuša preklopiti na opozorilo, ki ni na voljo.
org.openqa.selenium.NoAlertPresentException bo vržen Če pod kodo avtomatizacije klici sprejmejo () delovanje v razredu Alert (), ko opozorilo še ni na zaslonu.
driver.switchTo (). alert (). accept ();
Obravnava izjem:
try { driver.switchTo().alert().accept(); } catch (NoSuchAlertException e)
V tem primeru se izjema vrže, tudi če opozorilo ni naloženo v celoti.
Izogibanje in ravnanje z njimi : Vedno uporabite izrecno ali tekoče čakanje za določen čas v vseh primerih, ko se pričakuje opozorilo. Če je opozorilo na voljo in še vedno obstaja izjema, je ujeto.
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
Ta podrazred NoSuchElementException razred se pojavi, ko je izbirnik nepravilen ali skladenjsko neveljaven. Ta izjema se pogosto zgodi, ko se uporablja lokator XPATH.
Upoštevajte spodnji primer:
clickXPathButtonAndWait ('// gumb (@ tip = 'gumb') (100)');
To bi vrglo InvalidSelectorExeption, ker je sintaksa XPATH napačna.
Izogibanje in ravnanje : Da se temu izognemo, moramo preveriti uporabljeni lokator, ker je lokator verjetno napačen ali je sintaksa napačna. Uporaba Firebuga za iskanje xpath lahko to izjemo zmanjša.
Spodnja koda prikazuje, kako z njo ravnati s pomočjo poskusa / ulova
try { clickXPathButtonAndWait('//button(@type='button')'); } catch (InvalidSelectorException e) { }
# 6) org.openqa.selenium.ElementNotVisibleException
ElementNotVisibleException razred je podrazred ElementNotInteractableException razred. Ta izjema se pojavi, ko WebDriver poskuša izvesti dejanje na nevidnem spletnem elementu, s katerim ni mogoče komunicirati. To pomeni, da je spletni element v skritem stanju.
Na primer, v spodnji kodi, če je vrsta gumba z ID-jem 'submit' 'skrita' v HTML, org.openqa.selenium.ElementNotVisibleException bo vržen.
driver.findElement(By.id('submit')).click(); Exception Handling: try { driver.findElement(By.id('submit')).click(); } catch (ElementNotVisibleException e)
V tem primeru se izjema vrže tudi, če se stran ni naložila v celoti.
vprašanja in odgovori za testni vodnik pdf
Izogibanje in ravnanje z njimi : Obstajata dva načina za to. Lahko uporabimo počakajte, da se element popolnoma prikaže.
Spodnja koda čaka na element 10 sekund. Če je element viden in je še vedno vržena izjema, je ujet.
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
Ta izjema spada pod InvalidElementStateException razred . ElementNotSelectableException označuje, da je spletni element prisoten na spletni strani, vendar ga ni mogoče izbrati.
Na primer, spodnja koda lahko vrže ElementNotSelectableException, če je id 'hitri' onemogočen.
Izberi spustni meni = novo Izberi (driver.findElement (By.id (“hitri”)));
Obravnava izjem:
poskusite {
Izberi spustni meni = novo Izberi (driver.findElement (By.id (“hitri”)));
} catch (ElementNotSelectableException e)
V tem primeru pride do izjeme, tudi če element čez nekaj časa postane omogočen.
Izogibanje in ravnanje z njimi : Lahko dodamo ukaz za čakanje, da počakamo, dokler element ne postane klikljiv. Če še vedno obstaja izjema, je ujeta.
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
Ta izjema se zgodi, ko dokončanje ukaza traja več kot čakalno dobo. Čakanja v glavnem uporabljajo WebDriver, da se izognejo izjemi ElementNotVisibleException.
Včasih se testna stran morda ne naloži popolnoma pred naslednjim ukazom v programu. Če WebDriver poskuša poiskati element na spletni strani, preden se stran popolnoma naloži, se vrže izjema ElementNotVisibleException. Da bi se izognili tej izjemi, so dodani ukazi za čakanje.
Če pa se komponente ne naložijo tudi po čakanju, izjema org.openqa.selenium .TimeoutException bo vržen.
driver.manage (). timeouts (). implicitnoWait (10, TimeUnit.SECONDS);
driver.get (“https://www.softwaretestinghelp.com”);
V zgornjem programu je dodano implicitno čakanje 10 sekund. Če stran www.softwaretestinghelp.com se ne naloži v 10 sekundah, nato bo vržen TimeoutException.
Izogibanje in ravnanje : Da se temu izognemo, lahko ročno preverimo povprečni čas nalaganja strani in prilagodimo čakanje
Lahko pa dodamo izrecno čakanje z uporabo izvršilca JavaScript, dokler se stran ne naloži.
V spodnjem primeru je uporabljen izvajalec JavaScript. Po navigaciji po strani pokličemo JavaScript return document.readyState za 20 sekund, dokler se ne vrne »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
Ta izjema se vrne, ko je metoda poklicana po zaprtju brskalnika s strani WebDriver.quit (). To se lahko zgodi tudi zaradi težav s spletnim brskalnikom, kot so zrušitve in WebDriver ne more izvršiti nobenega ukaza z uporabo primerka gonilnika.
Če želite videti to izjemo, lahko spodnjo kodo izvedete.
driver.quit ()
Izberi spustni meni = novo Izberi (driver.findElement (By.id (“hitri”)));
Izogibanje in ravnanje : Za zagon testnih primerov Selenium Webdriver vedno izberite najnovejšo stabilno različico brskalnika.
To izjemo je mogoče zmanjšati z uporabo driver.quit () ob zaključku vseh preskusov. Ne poskušajte jih uporabljati po vsakem testnem primeru. To lahko privede do težav, ko je primerek gonilnika ničen, prihajajoči preizkusni primeri pa ga poskušajo uporabiti brez inicializacije.
Spodnja koda ustvari primerek WebDriver v pripisu @BeforeSuite TestiNG in ga uniči v pripisu @AfterSuite TestiNG
@BeforeSuite public void setUp() throws MalformedURLException { WebDriver driver = new FirefoxDriver(); } @AfterSuite public void testDown() { driver.quit(); }
# 10) org.openqa.selenium.StaleElementReferenceException
Ta izjema pravi, da spletni element na spletni strani ni več prisoten.
Ta napaka ni enaka kot ElementNotVisibleException.
StaleElementReferenceException se vrže, ko je bil v programu brez težav ustvarjen predmet za določen spletni element, vendar; ta element ni več prisoten v oknu. To se lahko zgodi, če obstaja
- Navigacija na drugo stran
- DOM je osvežen
- Stikalo za okvir ali okno
WebElement firstName = driver.findElement (By.id (»ime«));
driver.switchTo (). window (Child_Window);
element.sendKeys (“Aaron”);
V zgornji kodi je bil ustvarjen objekt firstName, nato pa je bilo okno zamenjano. Nato WebDriver poskuša v polje »Obrazec« vnesti »Aaron«. V tem primeru se vrže StaleElementReferenceException.
Izogibanje in ravnanje : Potrdite, da poskušamo izvesti dejanje v pravilnem oknu. Da bi se izognili težavam zaradi osveževanja DOM, lahko uporabimo Dynamic Xpath
Pogovorimo se o drugem primeru.
Recimo, da je „id“ polja z uporabniškim imenom „username_1“ in XPath bo // * (@ id = ’ime_1?) . Ko znova odprete stran, se lahko 'id' spremeni v ' 'ime _11 ’. V tem primeru test ne bo uspel, ker WebDriver ni mogel najti elementa. V tem primeru bo vržen StaleElementReferenceException.
V tem primeru lahko uporabimo dinamični xpath, kot je
try { driver.findElement(By.xpath(“//*(contains(@id,firstname’))”)).sendKeys(“Aaron”); } catch (StaleElementReferenceException e)
V zgornjem primeru je uporabljen dinamični XPATH in če je izjema še vedno najdena, je ujeta.
Zaključek
Ravnanje z izjemami je bistveni del vsakega programa Java in tudi skripta za selen. Z lahko izdelamo robustno in optimalno kodo ravnanje z izjemo na pametne načine . Prav tako je najboljša praksa, da se izjeme obravnavajo v skriptu, ki vam bo omogočilo boljše poročilo, če program iz kakršnega koli razloga ne uspe.
Tu smo poskušali zajeti postopek in okvir ravnanja z izjemami, ki ga je treba implementirati v skripte za selen.
Ne pozabite, da v a. Ni vedno treba obravnavati izjeme poskusite ujeti blok. Izključite lahko tudi izjemo, odvisno od zahteve v skriptu.
Izjeme ne smemo prezreti, ker prekinejo izvajanje programa. V tej vadnici smo si ogledali različne izjeme in načine, kako zmanjšati možnosti za njihovo ročno preverjanje in kode.
Če dodate čakanje, lahko nadzirate nekatere primere, kot so »NoSuchElementException«, »ElementNotFoundException«, »ElementNotVisibleException«.
Naslednja vaja št. 20 : V prihajajoči vadnici bi razpravljali o na voljo različne vrste preskusnih okvirov . Preučili bi tudi prednosti in slabosti uporabe mladostnega okvirnega pristopa pri testiranju avtomatizacije. Podrobno bi razpravljali o testnem okviru, ki temelji na podatkih.
Prosimo, objavite poizvedbe, povezane z ravnanjem z izjemo v programu Selenium WebDriver, če jih imate.
Priporočeno branje
- Java izjeme in obravnava izjem z primeri
- Kako ravnati z opozorili / pojavnimi okni v programu Selenium WebDriver - Vodič za selenij št. 16
- Vadnica za AutoIt - Samodejni prenos, namestitev in osnovni skript AutoIt
- Vadnica za kumare selena: Integracija kumar Java Selenium WebDriver
- Integracija selena z JMeter
- Uvod v Selenium WebDriver - Vadnica za selenij št. 8
- 30+ najboljših vaj za selen: Naučite se selen z resničnimi primeri
- Priložnost za honorarno honorarno zaposlitev za strokovnjake za selen