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)