webdriver listeners selenium
Čo sú poslucháči WebDriver? Prečo potrebujeme poslucháčov pri automatickom testovaní selénu? Táto príručka podrobne odpovedá na tieto otázky pomocou príkladov vzorových kódov:
Poslucháči, ako to naznačuje názov, „počúvajú“ každú udalosť, ktorá je predpísaná v selénovom kóde. Napríklad, ak chcete vedieť, čo sa stane predtým, ako kliknete na akýkoľvek prvok; pred a po navigácii k prvku alebo čo sa stane, keď je vyvolaná výnimka a test zlyhá, poslucháči prídu vhod.
Praktickým využitím aplikácie Listeners pri testovaní automatizácie selénu by mohlo byť zaznamenanie poradia akcií a vytváranie snímok obrazovky, keď dôjde k vyvolaniu výnimky. To uľahčuje ľahké ladenie v neskorších fázach vykonania testu.
=> Skontrolujte VŠETKY návody na selén tu.
Čo sa dozviete:
Implementácia poslucháčov webdriveru
Existujú hlavne dva typy poslucháčov:
- Poslucháči webdriveru
- Poslucháči TestNG
Najskôr pochopíme, ako fungujú Webdriver Listeners. V tejto príručke sa zameriame na poslucháč udalostí Webdriver.
Prečo používame poslucháč udalostí Webdriver?
Pomocou nástroja Webdriver dokážeme v prehliadači a webových prvkoch spustiť množstvo udalostí. Sleduje všetky udalosti, ktoré sa spustia počas vykonávania, a môže nám pomôcť pri ladení, keď je vykonávanie dokončené.
Existujú dva spôsoby, ako môžeme implementovať poslucháčov udalostí Webdriver:
- WebDriverEventListener čo je rozhranie, ktoré má niektoré preddefinované metódy sledovania udalostí Webdriveru. Vyžaduje si to implementáciu VŠETKY metódy preddefinované v rozhraní.
- Trieda AbstractWebDriverEventListener ktorá nám poskytuje možnosť implementovať iba tie metódy, o ktoré máme záujem.
# 1) Rozhranie WebDriverEventListener
Preddefinované metódy použité na implementáciu rozhrania WebDriverEventListener sú uvedené nižšie:
(i) void beforeChangeValueOf (WebElement arg0, WebDriver arg1, CharSequence [] arg2)
Táto metóda sa spustí, keď na webovom prvku vykonáme operáciu sendKeys () alebo clear (). [Napríklad driver.findElement (By.id („Prihlásenie“)). Clear ()] a je spustený PRED vykonávanie operácie s webovým prvkom.
Parametre:
arg0= Web Element arg1=driver
(ii) void afterChangeValueOf (WebElement arg0, WebDriver arg1, CharSequence [] arg2)
Táto metóda sa spustí, keď na webovom prvku vykonáme operáciu sendKeys () alebo clear (). [Napríklad driver.findElement (By.id („Prihlásenie“)). Clear ()] a je spustený PO vykonávanie operácie s webovým prvkom.
Parametre:
arg0= Web Element arg1=driver
(iii) void beforeClickOn (WebElement arg0, WebDriver arg1)
Táto metóda je spustená PRED klikneme na akýkoľvek webový prvok.
Parametre:
arg0= Web Element arg1=driver
(iv) void afterClickOn (WebElement arg0, WebDriver arg1)
najlepšie webhostingové služby v Indii
Táto metóda je spustená PO klikneme na akýkoľvek webový prvok.
Parametre:
arg0= Web Element arg1=driver
(v) void beforeNavigateTo (reťazec arg0, WebDriver arg1)
Táto metóda sa spustí, keď použijeme navigate (). To (String URL) [Napríklad navigate (). To („https: // www.google.com ”)] A je spustený PRED navigácia na URL.
Parametre:
arg0= URL arg1=driver
(vi) void afterNavigateTo (reťazec arg0, WebDriver arg1)
Táto metóda sa spustí, keď použijeme navigate (). To (String URL) [Napríklad navigate (). To („https: // www.google.com ”)] A je spustený PO navigácia na URL.
Parametre:
arg0= URL arg1=driver
(vii) void beforeNavigateBack (WebDriver arg0)
Táto metóda sa spustí, keď použijeme príkaz navigate (). Back (). Koná sa PRED presmerovanie používateľa na predchádzajúcu stránku.
Parametre:
arg0=driver
(viii) void afterNavigateBack (WebDriver arg0)
Táto metóda sa spustí, keď použijeme príkaz navigate (). Back (). Koná sa PO presmerovanie používateľa na predchádzajúcu stránku.
Parametre:
arg0=driver
(ix) void beforeNavigateForward (WebDriver arg0)
Táto metóda sa spustí, keď použijeme príkaz navigate (). Forward (). Koná sa PRED presmerovanie používateľa na ďalšiu stránku.
Parametre:
arg0=driver
(x) void afterNavigateBack (WebDriver arg0)
Táto metóda sa spustí, keď použijeme príkaz navigate (). Forward (). Koná sa PO presmerovanie používateľa na ďalšiu stránku.
Parametre:
arg0=driver
(xi) void beforeNavigateRefresh (WebDriver arg0)
Táto metóda sa spustí, keď použijeme príkaz navigate (). Refresh (). Koná sa PRED obnovuje sa aktuálna stránka.
Parametre:
arg0=driver
(xii) void afterNavigateRefresh (WebDriver arg0)
Táto metóda sa spustí, keď použijeme príkaz navigate (). Refresh (). Koná sa PO obnovuje sa aktuálna stránka.
Parametre:
arg0=driver
(xiii) void beforeFindBy (autor arg0, WebElement arg1, WebDriver arg2)
Táto metóda sa spustí, keď použijeme príkaz driver.findElement (By.id („Some id or any other locator“)) . Koná sa PRED nájdite webový prvok.
Parametre:
arg0=locator arg1=Web Element arg2=driver
(xiv) void afterFindBy (Podľa arg0, WebElement arg1, WebDriver arg2)
Táto metóda sa spustí, keď použijeme príkaz driver.findElement (By.id („Some id or any other locator“)) . Koná sa PO nájdite webový prvok.
Parametre:
arg0=locator arg1=Web Element arg2=driver
(xv) void onException (Throwable arg0, WebDriver arg1)
Táto metóda je vyvolaná vždy, keď je vyvolaná výnimka. Napríklad, ak Webdriver nie je schopný nájsť prvok, spustí túto metódu a vykoná akýkoľvek kód, ktorý je v ňom napísaný.
Parametre:
arg0=Exception arg1= driver
(xvi) void beforeAlertAccept (WebDriver arg0)
Táto metóda sa spustí vždy, keď sa na obrazovke zobrazí výstražné pole, a spustí sa vpravo PRED kliknutím na tlačidlo „OK alebo PRIJAŤ“.
Parametre:
arg0=driver
(xvii) void afterAlertAccept (WebDriver arg0)
Táto metóda sa spustí vždy, keď sa na obrazovke zobrazí výstražné pole, a spustí sa vpravo PO kliknutím na tlačidlo „OK alebo PRIJAŤ“.
Parametre:
arg0=driver
(xviii) void beforeAlertDismiss (WebDriver arg0)
Táto metóda sa spustí vždy, keď sa na obrazovke zobrazí výstražné pole, a spustí sa vpravo PRED kliknutím na tlačidlo „ZRUŠIŤ“.
Parametre:
arg0=driver
(xix) void afterAlertDismiss (WebDriver arg0)
Táto metóda sa spustí vždy, keď sa na obrazovke zobrazí výstražné pole, a spustí sa vpravo PO kliknutím na tlačidlo „ZRUŠIŤ“.
Parametre:
arg0=driver
Toto sú všetky metódy, ktoré sú k dispozícii v WebDriverEventListener. Existujú ďalšie dve metódy beforeScript a afterScript, ale nebudeme sa nimi zaoberať v tomto tutoriále.
Kroky na implementáciu poslucháčov pomocou rozhrania „WebDriverEventListener“ v Eclipse:
Krok 1: Vytvorte balíček s názvom „Listeners“. Vo vnútri tohto balíka vytvorte triedu s názvom „ WebdriverListeners ”A nechajte ho implementovať „WebDriverEventListener“ .
Používateľské rozhranie by malo vyzerať takto:
Umiestnite kurzor myši na červenú čiaru s chybou. Aplikácia Eclipse by mala hodiť nasledujúci návrh na import aplikácie „WebDriverEventListener“. Kliknite na Importovať.
ako vytvoriť falošný e-mailový účet
Chyba v WebDriverEventListener je ukončená, ale nižšie uvidíte chybu v triede „WebDriverListeners“. Prejdite kurzorom na chybu a zobrazí sa návrh na pridanie neimplementovaných metód. Kliknite na ňu a uvidíte, že všetky metódy sú uvedené a popísané vyššie.
Upozorňujeme, že do každej metódy sme na demonštračné účely pridali riadok System.out.println.
koľko typov súborov je? pytón
Vzorový kód-1
package Listeners; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.events.WebDriverEventListener; public class WebDriverListeners implements WebDriverEventListener { @Override public void afterAlertAccept(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('After Alert Accept '+arg0.toString() ); } @Override public void afterAlertDismiss(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('After Alert Dismiss '+ arg0); } @Override public void afterChangeValueOf(WebElement arg0, WebDriver arg1, CharSequence[] arg2) { // TODO Auto-generated method stub System.out.println('After value change of' +arg0); } @Override public void afterClickOn(WebElement arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('After clicked'+arg0); } @Override public void afterFindBy(By arg0, WebElement arg1, WebDriver arg2) { // TODO Auto-generated method stub System.out.println('After Find By'+arg1); } @Override public void afterNavigateBack(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('After Navigate Back'); } @Override public void afterNavigateForward(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('After Navigate Forward'); } @Override public void afterNavigateRefresh(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('On Navigating Refresh'); } @Override public void afterNavigateTo(String arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('On Navigating To'+arg0); } @Override public void afterScript(String arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('After Script'); } @Override public void beforeAlertAccept(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('Before Alert Accept'); } @Override public void beforeAlertDismiss(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('Before Alert Dismiss'); } @Override public void beforeChangeValueOf(WebElement arg0, WebDriver arg1, CharSequence[] arg2) { // TODO Auto-generated method stub System.out.println('Before Change Value of'+arg0); } @Override public void beforeClickOn(WebElement arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('Before Click on'+arg0); } @Override public void beforeFindBy(By arg0, WebElement arg1, WebDriver arg2) { // TODO Auto-generated method stub System.out.println('Before Find By'+arg0); } @Override public void beforeNavigateBack(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('Before Navigate Back'); } @Override public void beforeNavigateForward(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('Before Navigate Forward'); } @Override public void beforeNavigateRefresh(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('Before Navigate Refresh'); } @Override public void beforeNavigateTo(String arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('Before Navigate To'+arg0); } @Override public void beforeScript(String arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('Before Script'); } @Override public void onException(Throwable arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('On Exception'+arg0); } }
Krok 2: Vytvorte triedu Listeners_Tests a skontrolujte, či má vo vnútri triedy hlavnú metódu. Nechajte ju rozšíriť triedu WebDriverListeners, aby trieda poslucháča mohla vykonávať operácie s príkazmi prehliadača predpísanými pre určité udalosti.
Skopírujte a vložte nasledujúci kód do triedy Listeners_Tests. Spustite nasledujúci kód, napríklad aplikáciu Java.
Vzorový kód-2
package Listeners; import java.util.Arrays; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.Proxy; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.support.events.EventFiringWebDriver; public class Listeners_Tests extends WebDriverListeners{ static WebElement e; static ChromeDriver driver; public static void main(String[] args) throws InterruptedException { // TODO Auto-generated method stub System.setProperty('webdriver.chrome.driver', 'E:\chromedriver.exe'); /*Setting the capabilities of Chrome Driver*/ try { DesiredCapabilities capabilities = DesiredCapabilities.chrome(); Proxy proxy = new Proxy(); String proxyServer = String.format('AProxyIDontWantToDisplay', System.getenv('proxy.username'), System.getenv('proxy.password')); proxy.setHttpProxy(proxyServer); capabilities.setCapability('proxy', proxy); ChromeOptions options = new ChromeOptions(); options.addArguments(Arrays.asList ('--no-sandbox','--ignore-certificate-errors','--homepage=about:blank','--no-first-run')); options.addArguments('disable-infobars'); capabilities.setCapability(ChromeOptions.CAPABILITY, options); driver = new ChromeDriver(capabilities); } catch (Exception e) { throw new Error(e); } /*---- Creating the instance of EventFiringWebDriver Class----*/ EventFiringWebDriver eventRecorder = new EventFiringWebDriver(driver); /*---- Creating the instance of parent class 'WebdriverListeners' class----*/ WebDriverListeners eCapture = new WebDriverListeners(); /* The below step registers the listeners for logging purpose*/ eventRecorder.register(eCapture); //Event One System.out.println('This is recording Event-One'); eventRecorder.navigate().to('https://www.google.com'); //Event Two System.out.println('This is recording Event-Two'); eventRecorder.findElement(By.xpath('//a[text()='Sign in']')).click(); //Event Three System.out.println('This is recording Event-Three'); eventRecorder.findElement(By.id('identifierId')).clear(); Thread.sleep(5000); //Event Four System.out.println('This is recording Event-Four'); eventRecorder.findElement(By.id('identifierId')).sendKeys('abc@gmail.com'); Thread.sleep(5000); //Event Five System.out.println('This is recording Event-Five'); eventRecorder.navigate().back(); //Event Six System.out.println('This is recording Event-Six'); eventRecorder.navigate().forward(); //Event Seven System.out.println('This is recording Event-Seven'); eventRecorder.navigate().refresh(); //Event Eight System.out.println('This is recording Event-Eight'); eventRecorder.get('https://www.irctc.co.in/eticketing/loginHome.jsf'); //Event Nine System.out.println('This is recording Event-Nine'); eventRecorder.findElement(By.id('loginbutton')).click(); try { Alert alert = eventRecorder.switchTo().alert(); // check if alert exists // TODO find better way alert.getText(); //Event Ten System.out.println('This is recording Event-Ten'); alert.accept(); } catch (Exception e) { } Thread.sleep(3000); eventRecorder.findElement(By.id('loginbutton')).click(); try { Alert alert = eventRecorder.switchTo().alert(); // check if alert exists // TODO find better way alert.getText(); //Event Eleven System.out.println('This is recording Event-Eleven'); alert.dismiss(); } catch (Exception e) { } //Intentionally giving wrong id so it triggers onException Listener--> Event Twelve System.out.println('This is recording Event-Twelve'); eventRecorder.findElement(By.id('loginbutn')).click(); } }
Po úspešnom dokončení spustenia skontrolujte obsah prihlásený v konzole. Pôjdeme na každú udalosť uvedenú v kóde vyššie.
Úryvok č. 1 konzoly
Udalosť 1: Toto zaznamená udalosť beforeNavigateTo a afterNavigateTo a podľa toho vykoná akcie napísané v týchto dvoch blokoch.
Udalosť 2: Toto zaznamená udalosť beforeFindBy a afterFindBy a podľa toho vykoná akcie napísané v dvoch blokoch. Udalosť po týchto dvoch udalostiach sa týka udalostí beforeClick a afterClick.
Udalosť 3: Zaznamenajú sa udalosti beforeChangeValueOf a afterChangeValue.
Udalosť 4: Je to rovnaké ako v prípade Event-3
Udalosť 5: Zaznamenávajú sa udalosti beforeNavigateBack a afterNavigateBack.
Udalosť 6: Toto zaznamenáva udalosti beforeNavigateForward a afterNavigateForward.
Udalosť 7: Toto zaznamenáva udalosti beforeNavigateRefresh a afterNavigateRefresh.
Udalosť 8: Je to rovnaké ako udalosť 1
Udalosť 9: Je to rovnaké ako v prípade Event-2
Úryvok č. 2 konzoly
Udalosť 10: Zaznamenávajú sa udalosti ako beforeAlertAccept a afterAlertAccept.
Udalosť 11: Zaznamenávajú sa udalosti ako beforeAlertDismiss a afterAlertDismiss.
Udalosť 12: Toto zaznamená udalosti ako onException a vyhodí správu.
Dúfam, že krátky popis poslucháčov vám poskytne predstavu o tom, ako poslucháči Webdriveru fungujú. Ako sme už povedali, pomocou WebDriverEventListener musíme implementovať všetky metódy dostupné v tomto rozhraní.
Avšak pomocou triedy AbstractWebDriverEventListener si môžeme zvoliť, ktoré udalosti chceme implementovať.
# 2) Trieda AbstractWebDriverEventListener
Kroky na implementáciu poslucháčov pomocou triedy „AbstractWebDriverEventListener“:
Krok 1
Vytvoriť triedu “ AbstractWebDriverListener „A nech to rozšíri triedu“ AbstractWebDriverEventListener „
Ako vidíte, na rozdiel od „ WebDriverEventListener ”, Táto trieda po rozšírení nevyvolá chybu pri pridávaní neimplementovaných metód. Môžete si vybrať, ktoré metódy chcete vo svojom projekte implementovať.
Skopírujte a vložte nasledujúci kód:
Vzorový kód-3
package Listeners; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.events.AbstractWebDriverEventListener; public class AbstractWebDriverListeners extends AbstractWebDriverEventListener{ public void afterChangeValueOf(WebElement arg0, WebDriver arg1, CharSequence[] arg2) { // TODO Auto-generated method stub System.out.println('After value change of' +arg0); } public void afterClickOn(WebElement arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('After clicked'+arg0); } public void afterFindBy(By arg0, WebElement arg1, WebDriver arg2) { // TODO Auto-generated method stub System.out.println('After Find By'+arg1); } public void beforeChangeValueOf(WebElement arg0, WebDriver arg1, CharSequence[] arg2) { // TODO Auto-generated method stub System.out.println('Before Change Value of'+arg0); } public void beforeClickOn(WebElement arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('Before Click on'+arg0); } public void beforeFindBy(By arg0, WebElement arg1, WebDriver arg2) { // TODO Auto-generated method stub System.out.println('Before Find By'+arg0); } }
Krok 2
Vytvorte novú triedu s názvom „ AbstractListeners_Test ”A v jeho vnútri vytvorte inštanciu“ AbstractWebDriverListeners ' trieda.
Skopírujte a vložte nasledujúci kód do tejto triedy.
Vzorový kód-4
package Listeners; import java.util.Arrays; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.Proxy; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.support.events.EventFiringWebDriver; public class AbstractListeners_Tests extends WebDriverListeners{ static WebElement e; static ChromeDriver driver; public static void main(String[] args) throws InterruptedException { // TODO Auto-generated method stub System.setProperty('webdriver.chrome.driver', 'E:\chromedriver.exe'); /*Setting the capabilities of Chrome Driver*/ try { DesiredCapabilities capabilities = DesiredCapabilities.chrome(); Proxy proxy = new Proxy(); String proxyServer = String.format('AProxyIDontWantToDisplay', System.getenv('proxy.username'), System.getenv('proxy.password')); proxy.setHttpProxy(proxyServer); capabilities.setCapability('proxy', proxy); ChromeOptions options = new ChromeOptions(); options.addArguments(Arrays.asList ('--no-sandbox','--ignore-certificate-errors','--homepage=about:blank','--no-first-run')); options.addArguments('disable-infobars'); capabilities.setCapability(ChromeOptions.CAPABILITY, options); driver = new ChromeDriver(capabilities); } catch (Exception e) { throw new Error(e); } /*---- Creating the instance of EventFiringWebDriver Class----*/ EventFiringWebDriver eventRecorder = new EventFiringWebDriver(driver); /*---- Creating the instance of parent class 'AbstractWebdriverListeners' class----*/ AbstractWebDriverListeners eCapture = new AbstractWebDriverListeners(); /* The below step registers the listeners for logging purpose*/ eventRecorder.register(eCapture); //Event One System.out.println('This is recording Event-One'); eventRecorder.navigate().to('https://www.google.com'); //Event Two System.out.println('This is recording Event-Two'); eventRecorder.findElement(By.xpath('//a[text()='Sign in']')).click(); //Event Three System.out.println('This is recording Event-Three'); eventRecorder.findElement(By.id('identifierId')).clear(); Thread.sleep(5000); //Event Four System.out.println('This is recording Event-Four'); eventRecorder.findElement(By.id('identifierId')).sendKeys('abc@gmail.com'); Thread.sleep(5000); //Event Five System.out.println('This is recording Event-Five'); eventRecorder.navigate().back(); //Event Six System.out.println('This is recording Event-Six'); eventRecorder.navigate().forward(); //Event Seven System.out.println('This is recording Event-Seven'); eventRecorder.navigate().refresh(); //Event Eight System.out.println('This is recording Event-Eight'); eventRecorder.get('https://www.irctc.co.in/eticketing/loginHome.jsf'); //Event Nine System.out.println('This is recording Event-Nine'); eventRecorder.findElement(By.id('loginbutton')).click(); try { Alert alert = eventRecorder.switchTo().alert(); // check if alert exists // TODO find better way alert.getText(); //Event Ten System.out.println('This is recording Event-Ten'); alert.accept(); } catch (Exception e) { } Thread.sleep(3000); eventRecorder.findElement(By.id('loginbutton')).click(); try { Alert alert = eventRecorder.switchTo().alert(); // check if alert exists // TODO find better way alert.getText(); //Event Eleven System.out.println('This is recording Event-Eleven'); alert.dismiss(); } catch (Exception e) { } //Intentionally giving wrong id so it triggers onException Listener--> Event Twelve System.out.println('This is recording Event-Twelve'); eventRecorder.findElement(By.id('loginbutn')).click(); } }
Táto trieda má tiež udalosti zaznamenané skôr, ale pretože sme obmedzili našu triedu Listener na implementáciu iba šiestich udalostí, zahodí ďalšie a zobrazí iba protokol pre tie, ktoré sú spomenuté.
Zobrazenie okna konzoly
Ako môžete vidieť na žlto vyznačených oblastiach na obrázku vyššie, iba tie metódy, ktoré boli implementované v AbstractWebDriverListeners Trieda bola spustená.
Záver
WebDriver Listeners sú rozhrania, ktoré počúvajú udalosti prehliadača a zodpovedajúcim spôsobom na ne reagujú. Ak ho implementujete pomocou WebDriverEventListener, musíte implementovať všetky metódy spojené s týmto rozhraním
Ak implementujete WebDriver Listener pomocou triedy AbstractWebDriverEventListener, môžete zvoliť metódy, ktoré chcete implementovať.
=> Navštívte tu a naučte sa selén od nuly.
Odporúčané čítanie
- Výukový program Cucumber Selenium: Cucumber Java Selenium WebDriver Integration
- Úvod do softvéru Selenium WebDriver - Výučba selénu č. 8
- Výukový program pre selén ChromeDriver: Testy selenového webdriveru v prehliadači Chrome
- Implementácia nášho prvého skriptu WebDriver - výučba selénu WebDriver č. 10
- 30+ najlepších návodov na selén: Naučte sa selén na skutočných príkladoch
- Časté otázky o seléne
- Ako zaobchádzať s upozorneniami alebo vyskakovacími oknami v ovládači Selenium WebDriver - selén - návod č
- Implicitné a explicitné čakanie v ovládači selénu WebDriver (typy čakania na selén)