top 10 selenium exceptions
Obsługa wyjątków Selenium WebDriver przy użyciu struktury obsługi wyjątków - samouczek Selenium nr 19
Uzyskanie wyjątku w kodzie automatyzacji jest bardzo częste. „Wyjątek”, jak wskazuje słowo, jest przypadkiem szczególnym lub rzadkim.
Wykonanie kodu automatyzacji zwykle może nie przebiegać zgodnie z oczekiwaniami z powodu wielu czynników związanych z wykonaniem, takich jak problemy ze stabilnością sieci, problemy z Internetem, stabilność serwera itp. Możemy uzyskać wyjątki z powodu niewystarczającego czasu oczekiwania lub nieprawidłowej składni, parametrów itp.
W ostatnim samouczku dotyczącym WebDriver dowiedzieliśmy się o 3 różnych typach ważnych elementów sieci, takich jak Tabele internetowe, ramki i elementy dynamiczne i ich mechanizmy obsługi w skrypcie selenowym
Zanim przejdziemy do przodu z samouczkami Framework w tym Trening selenu serię, w tym poradniku nauczymy się typy wyjątków i sposób obsługi wyjątków w skryptach Java i Selenium . Deweloperzy / testerzy używają frameworka obsługi wyjątków do obsługi wyjątków w skryptach selenu.
Czego się nauczysz:
- Co to jest wyjątek?
- Zalety i wady podejścia Unikaj obsługi
- Typy wyjątków w Javie i Selenium
- Obsługa wyjątków
- Typowe wyjątki w Selenium WebDriver
- Unikanie i obsługa typowych wyjątków
- # 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
- Wniosek
- rekomendowane lektury
Co to jest wyjątek?
Wyjątkami są zdarzenia, w wyniku których program Java kończy się nagle bez podania oczekiwanego wyniku. Java zapewnia strukturę, w której użytkownik może obsługiwać wyjątki.
Proces obsługi wyjątków nazywa się obsługą wyjątków.
Wyjątki wymagają obsługi, ponieważ przerywają normalny przepływ wykonywania programu. Jedną z ważnych intencji obsługi wyjątków jest zapobieżenie tej przerwie i kontynuowanie wykonywania programu. Czasami możesz chcieć wykonać szereg działań w przypadku wystąpienia określonego wyjątku.
W przypadku wystąpienia wyjątku tworzony jest obiekt wyjątku, który jest technicznie określany jako „ Throwing an Exception ” i dodajemy Próbuj złapać bloki jak,
try { // Protected code } catch (ExceptionName e) { // Catch block }
# 1) Fragment kodu, który może zgłosić wyjątek, jest dodawany wewnątrz bloku Try.
#dwa) Instrukcja Catch przechwytuje wyjątek i przyjmuje go jako parametr.
# 3) Gdy nie zostanie zgłoszony żaden wyjątek, wykonywana jest instrukcja try, a nie instrukcja catch.
Przykład : Gdy skrypt selenu zawodzi z powodu niewłaściwego lokalizatora, programista powinien być w stanie zrozumieć przyczynę niepowodzenia i można to łatwo osiągnąć, jeśli wyjątek jest prawidłowo obsługiwany w programie.
Z mojego doświadczenia wynika, że najlepiej jest unikać wyjątków WebDriver, gdy tylko jest to możliwe i wyłapywać naprawdę wyjątkowe przypadki. Użyj try / catch, aby poradzić sobie z rzeczami, które idą źle i są poza moją kontrolą.
Unikaj tych, które mogę złapać innych!
To najlepsza strategia, która mi się sprawdziła.
Na przykład, weź pod uwagę stronę testową, której załadowanie na serwerze testowym zajmuje więcej niż zwykle czasu. Podczas wykonywania czynności na tej stronie będziemy otrzymywać częste wyjątki. Więc zamiast łapać to za każdym razem, możemy
- Dodaj polecenie czekania i spróbuj uniknąć wyjątku
- Użyj opcji „Try / Catch”, aby poradzić sobie w przypadku naprawdę wyjątkowego przypadku
Tym samym zmniejszając szanse na wyjątki.
Zalety i wady podejścia Unikaj obsługi
Zalety | Niedogodności |
---|---|
1) Takie podejście zmniejsza szanse na uzyskanie wyjątków. | 1) Zwiększa liczbę wierszy kodów, ponieważ dodajesz dodatkowy kod, aby uniknąć wyjątków |
Jeśli wyjątek nadal zostanie złapany, to 2) byłby naprawdę wyjątkowym przypadkiem, który warto sprawdzić | 2) Powinien lepiej rozumieć interfejs API sterownika internetowego, polecenia i wyjątki |
Skróć czas debugowania. Kod automatyzacji ma na celu znajdowanie błędów i nie chcesz widzieć zbyt wielu niechcianych 3) wyjątków i znajdować przyczyny każdego z nich | |
4) W bloku Catch zajmujesz się ważniejszymi sprawami | |
5) Zmniejsz liczbę fałszywych awarii | |
6) Jaśniejszy raport |
W tym samouczku omówimy Unikaj i trzymaj podejście do 10 najczęstszych wyjątków w Selenium WebDriver. Wcześniej zapoznajmy się z podstawowymi informacjami na temat obsługi wyjątków i bloków Try / Catch.
Typy wyjątków w Javie i Selenium
Poniżej opisaliśmy typy wyjątków i różne sposoby wykorzystania frameworka obsługi wyjątków w skryptach selenu.
Istnieją trzy rodzaje wyjątków:
- Sprawdzony wyjątek
- Niezaznaczony wyjątek
- Błąd
Hierarchia klas wyjątków i błędów:
# 1) Sprawdzony wyjątek: Zaznaczony wyjątek jest obsługiwany w czasie kompilacji i daje błąd kompilacji, jeśli nie zostanie przechwycony i obsłużony w czasie kompilacji.
Przykład : FileNotFoundException , IOException itp.
# 2) Niezaznaczony wyjątek: W przypadku niezaznaczonego wyjątku kompilator nie wymaga obsługi. Kompilator ignoruje w czasie kompilacji.
Przykład : ArrayIndexoutOfBoundException
# 3) Błąd: Jeśli scenariusz jest krytyczny i program nie może odtworzyć, JVM zgłasza błąd. Blok try-catch nie obsługuje błędów. Nawet jeśli użytkownik spróbuje obsłużyć błąd przy użyciu bloku Try catch, nie może naprawić błędu.
Przykład : Błąd asercji , Błąd brak pamięci itp.
Obsługa wyjątków
Blok Try and Catch:
próbuj złapać bloki są zwykle używane do obsługi wyjątków. Typ wyjątków jest deklarowany w bloku catch, który ma nadejść. Gdy wyjątek pojawia się w bloku try, natychmiast kontrolka przechodzi do bloku catch.
Przykład :
try { br = new BufferedReader(new FileReader('Data')); } catch(IOException ie) { ie.printStackTrace(); }
W zależności od typu wyjątku może istnieć wiele bloków catch dla jednego bloku try.
Przykład :
try { br = new BufferedReader(new FileReader('Data')); } catch(IOException ie) { ie.printStackTrace(); } catch(FileNotFoundException file){ file.printStackTrace(); }
rzuca Wyjątek:
rzuca słowo kluczowe w java służy do zgłaszania wyjątku zamiast obsługiwać go. Wszystkie zaznaczone wyjątki można zgłaszać metodami.
Przykład :
public static void main(String[] args) throws IOException { BufferedReader br=new BufferedReader(new FileReader('Data')); while ((line = br.readLine()) != null) { System.out.println(line); } }
Wreszcie blok:
Wreszcie , blok jest wykonywany niezależnie od wykonania bloku try-catch i jest wykonywany natychmiast po zakończeniu bloku try / catch.
Zasadniczo zamknięcie pliku, połączenie z bazą danych itp. Może zostać zamknięte w ostatnim bloku.
Przykład :
try { br = new BufferedReader(new FileReader('Data')); } catch(IOException ie) { ie.printStackTrace(); } Finally { br.close(); }
W powyższym przykładzie BufferReader strumień jest zamknięty w końcowym bloku. br.close () będzie zawsze wykonywany niezależnie od wykonania bloku try and catch.
Uwaga : wreszcie blok może istnieć bez żadnego bloku catch. Nie jest konieczne, aby zawsze mieć blokadę zaczepową.
Może być wiele bloków catch, ale można użyć tylko jednego bloku końcowego.
Rzut : Throwable to klasa nadrzędna dla błędów i wyjątków. Ogólnie rzecz biorąc, trudno jest obsłużyć błędy w java. Jeśli programista nie ma pewności co do typu błędu i wyjątku, zaleca się użycie klasy Throwable, która może wychwycić zarówno błąd, jak i wyjątek.
Przykład :
try { br = new BufferedReader(new FileReader('Data')); } catch (Throwable t) { t.printStackTrace(); }
Typowe wyjątki w Selenium WebDriver
Selen ma swój własny zestaw wyjątków. Podczas tworzenia skryptów selenowych programista musi obsłużyć lub wyrzucić te wyjątki.
Poniżej znajduje się kilka przykładów wyjątków w selenie:
Wszystkie klasy wyjątków środowiska uruchomieniowego w Selenium WebDriver należą do nadklasy WebDriverException.
Chociaż istnieje wiele klas wyjątków w WebDriverException, często widzimy poniższe.
- NoSuchElementException
- NoSuchWindowException
- NoSuchFrameException
- NoAlertPresentException
- InvalidSelectorException
- ElementNotVisibleException
- ElementNotSelectableException
- TimeoutException
- NoSuchSessionException
- StaleElementReferenceException
Detale :
ElementNotVisibleException : Jeśli selen próbuje znaleźć element, ale element nie jest widoczny na stronie
NoAlertPresentException : Jeśli użytkownik próbuje obsłużyć okno alertu, ale alertu nie ma.
NoSuchAttributeException : Podczas próby pobrania wartości atrybutu, ale atrybut nie jest dostępny w DOM.
NoSuchElementException : Ten wyjątek jest spowodowany dostępem do elementu, który nie jest dostępny na stronie.
WebDriverException : Wyjątek występuje, gdy kod nie może zainicjować WebDriver.
Unikanie i obsługa typowych wyjątków
Omówmy podejście Unikaj i obsługuj dla wyżej wymienionych wyjątków:
# 1) org.openqa.selenium.NoSuchElementException
Ta często spotykana klasa wyjątków jest podklasą klasy NotFoundException klasa. Wyjątek występuje, gdy WebDriver nie może znaleźć i zlokalizować elementów.
Zwykle dzieje się tak, gdy tester zapisuje nieprawidłowy lokalizator elementów w metodzie findElement (By, by).
Weź pod uwagę, że w poniższym przykładzie poprawnym identyfikatorem pola tekstowego było „pierwsze pole”, ale tester nieprawidłowo określił je jako „pierwsze pole”. W takim przypadku WebDriver nie może zlokalizować elementu i org.openqa.selenium.NoSuchElementException zostanie wyrzucony
driver.findElement(By.id('submit')).click(); Exception Handling: try { driver.findElement(By.id('submit')).click(); } catch (NoSuchElementException e)
W takim przypadku wyjątek jest generowany, nawet jeśli element nie jest załadowany.
Unikanie i obsługa : Spróbuj wydać polecenie czekania.
Przykład: Poniższe polecenie wait czeka 10 sekund na obecność elementu web o identyfikatorze „submit”. Następnie próbuje go kliknąć. Jeśli element jest dostępny, ale mimo to kliknięcie kończy się niepowodzeniem, zostanie wychwycony wyjątek.
Używanie opóźnionego czasu jest powszechną praktyką w automatyzacji testów do tworzenia przerwy między krokami. Dodając metodę Try / Catch, zapewniamy, że program będzie działał, nawet jeśli oczekiwanie nie pomoże.
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 podlega NotFoundException klasa. Jest to generowane, gdy WebDriver próbuje przełączyć się do nieprawidłowego okna.
Poniższy kod może zgłosić wyjątek org.openqa.selenium.NoSuchWindowException, jeśli uchwyt okna nie istnieje lub nie można go zmienić.
driver.switchTo (). window (handle_1);
Unikanie i obsługa : Używalibyśmy uchwytów okien, aby uzyskać zestaw aktywnych okien, a następnie wykonywać na nich akcje.
W poniższym przykładzie dla każdej klamki okna następuje przełączenie sterownika na. Dlatego szanse na przekazanie niewłaściwego parametru okna są zmniejszone.
for (String handle : driver.getWindowHandles()) { try { driver.switchTo().window(handle); } catch (NoSuchWindowException e) { System.out.println(“An exceptional case”); } }
# 3) org.openqa.selenium.NoSuchFrameException
Gdy WebDriver próbuje przełączyć się do nieprawidłowej ramki, generowany jest wyjątek NoSuchFrameException w klasie NotFoundException.
Poniższy kod może zgłosić wyjątek org.openqa.selenium.NoSuchFrameException, jeśli ramka „frame_11” nie istnieje lub jest niedostępna.
driver.switchTo (). frame („frame_11”);
Obsługa wyjątków:
try { driver.switchTo().frame('frame_11'); } catch (NoSuchFrameException e)
W takim przypadku wyjątek jest zgłaszany, nawet jeśli ramka nie jest załadowana.
Unikanie i obsługa : Spróbuj wydać polecenie czekania.
W poniższym przykładzie WebDriver czeka 10 sekund, aż ramka będzie dostępna. Jeśli ramka jest dostępna, a nadal występuje wyjątek, zostaje przechwycona.
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 jest generowany, gdy WebDriver próbuje przełączyć się na alert, który nie jest dostępny.
org.openqa.selenium.NoAlertPresentException zostanie wyrzucony Jeśli poniższy kod automatyzacji wywoła operację accept () na klasie Alert (), gdy alert nie jest jeszcze na ekranie.
driver.switchTo (). alert (). accept ();
Obsługa wyjątków:
try { driver.switchTo().alert().accept(); } catch (NoSuchAlertException e)
W takim przypadku wyjątek jest zgłaszany, nawet jeśli alert nie został w pełni załadowany.
Unikanie i obsługa : Zawsze używaj wyraźnego lub płynnego oczekiwania przez określony czas we wszystkich przypadkach, w których oczekiwany jest alert. Jeśli alert jest dostępny i nadal istnieje wyjątek, zostaje przechwycony.
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 podklasa NoSuchElementException class występuje, gdy selektor jest niepoprawny lub składniowo niepoprawny. Ten wyjątek występuje często, gdy używany jest lokalizator XPATH.
Rozważ poniższy przykład:
clickXPathButtonAndWait („// button [@ type =’ button ”] [100]”);
Spowodowałoby to zgłoszenie InvalidSelectorExeption, ponieważ składnia XPATH jest niepoprawna.
Unikanie i obsługa : Aby tego uniknąć, powinniśmy sprawdzić używany lokalizator, ponieważ lokalizator jest prawdopodobnie nieprawidłowy lub składnia jest nieprawidłowa. Użycie Firebuga do znalezienia xpath może zredukować ten wyjątek.
Poniższy kod pokazuje, jak sobie z tym poradzić za pomocą Try / Catch
try { clickXPathButtonAndWait('//button[@type='button']'); } catch (InvalidSelectorException e) { }
# 6) org.openqa.selenium.ElementNotVisibleException
ElementNotVisibleException class jest podklasą klasy ElementNotInteractableException klasa. Ten wyjątek jest zgłaszany, gdy WebDriver próbuje wykonać akcję na niewidocznym elemencie sieci web, z którym nie można wchodzić w interakcje. Oznacza to, że element sieciowy jest w stanie ukrytym.
Na przykład, w poniższym kodzie, jeśli typ przycisku z identyfikatorem „wyślij” jest „ukryty” w HTML, org.openqa.selenium.ElementNotVisibleException zostanie wyrzucony.
driver.findElement(By.id('submit')).click(); Exception Handling: try { driver.findElement(By.id('submit')).click(); } catch (ElementNotVisibleException e)
W takim przypadku wyjątek jest generowany, nawet jeśli strona nie została wczytana w całości.
Unikanie i obsługa : Można to zrobić na dwa sposoby. Możemy użyć czekania na całkowite wypełnienie elementu.
Poniższy kod czeka 10 sekund na element. Jeśli element jest widoczny i nadal jest zgłaszany wyjątek, jest przechwytywany.
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
Ten wyjątek podlega InvalidElementStateException klasa . ElementNotSelectableException wskazuje, że element WWW jest obecny na stronie internetowej, ale nie można go wybrać.
Na przykład, poniższy kod może zgłosić wyjątek ElementNotSelectableException, jeśli identyfikator „swift” jest wyłączony.
Wybierz menu rozwijane = nowy Wybierz (driver.findElement (By.id („swift”)));
Obsługa wyjątków:
próbować {
Wybierz menu rozwijane = nowy Wybierz (driver.findElement (By.id („swift”)));
} catch (ElementNotSelectableException e)
W takim przypadku wyjątek jest generowany, nawet jeśli element zostanie włączony po chwili.
Unikanie i obsługa : Możemy dodać polecenie czekania, aby poczekać, aż element stanie się klikalny. Jeśli nadal istnieje wyjątek, zostaje przechwycony.
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
Ten wyjątek występuje, gdy wykonanie polecenia trwa dłużej niż czas oczekiwania. Oczekiwania są używane głównie w WebDriver, aby uniknąć wyjątku ElementNotVisibleException.
Czasami strona testowa może nie załadować się całkowicie przed następnym poleceniem w programie. Jeśli WebDriver spróbuje znaleźć element na stronie internetowej przed całkowitym załadowaniem strony, zostanie zgłoszony wyjątek ElementNotVisibleException. Aby uniknąć tego wyjątku, dodano polecenia czekania.
Jeśli jednak komponenty nie ładują się nawet po oczekiwaniu, wyjątek org.openqa.selenium .TimeoutException zostanie wyrzucony.
driver.manage (). timeouts (). implicitlyWait (10, TimeUnit.SECONDS);
driver.get („https://www.softwaretestinghelp.com”);
W powyższym programie dodano niejawne oczekiwanie wynoszące 10 sekund. Jeśli page www.softwaretestinghelp.com nie ładuje się w ciągu 10 sekund, zostanie zgłoszony wyjątek TimeoutException.
Unikanie i obsługa : Aby tego uniknąć, możemy ręcznie sprawdzić średni czas ładowania strony i dostosować czas oczekiwania
Lub możemy dodać jawne oczekiwanie za pomocą modułu wykonawczego JavaScript, aż strona zostanie załadowana.
W poniższym przykładzie używany jest moduł wykonawczy JavaScript. Po nawigacji po stronie wywołujemy kod JavaScript return document.readyState przez 20 sekund, aż do zwrócenia „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
Ten wyjątek jest generowany, gdy metoda jest wywoływana po zamknięciu przeglądarki przez WebDriver.quit (). Może się to również zdarzyć z powodu problemów z przeglądarką internetową, takich jak awarie, a WebDriver nie może wykonać żadnego polecenia za pomocą instancji sterownika.
Aby zobaczyć ten wyjątek, można wykonać poniższy kod.
driver.quit ()
Wybierz menu rozwijane = nowy Wybierz (driver.findElement (By.id („swift”)));
Unikanie i obsługa : Zawsze wybieraj najnowszą stabilną wersję przeglądarki, aby uruchomić przypadki testowe Selenium Webdriver.
Ten wyjątek można zredukować, używając driver.quit () po zakończeniu wszystkich testów. Nie próbuj ich używać po każdym przypadku testowym. Może to prowadzić do problemów, gdy instancja sterownika jest pusta, a nadchodzące przypadki testowe będą próbowały go używać bez inicjalizacji.
Poniższy kod tworzy instancję WebDriver w adnotacji @BeforeSuite TestiNG i niszczy ją w adnotacji @AfterSuite TestiNG
@BeforeSuite public void setUp() throws MalformedURLException { WebDriver driver = new FirefoxDriver(); } @AfterSuite public void testDown() { driver.quit(); }
# 10) org.openqa.selenium.StaleElementReferenceException
Ten wyjątek mówi, że element sieciowy nie jest już obecny na stronie internetowej.
Ten błąd nie jest tym samym, co ElementNotVisibleException.
StaleElementReferenceException jest generowany, gdy obiekt dla określonego elementu WWW został utworzony w programie bez żadnego problemu, a jednak; tego elementu nie ma już w oknie. Może się to zdarzyć, jeśli istnieje plik
- Nawigacja do innej strony
- DOM został odświeżony
- Ramka lub przełącznik okienny
WebElement firstName = driver.findElement (By.id („imię”));
driver.switchTo (). window (Child_Window);
element.sendKeys („Aaron”);
W powyższym kodzie utworzono obiekt firstName, a następnie przełączono okno. Następnie WebDriver próbuje wpisać „Aaron” w polu formularza. W takim przypadku zostanie zgłoszony StaleElementReferenceException.
Unikanie i obsługa : Potwierdź, że próbujemy wykonać czynność w odpowiednim oknie. Aby uniknąć problemów związanych z odświeżaniem DOM, możemy użyć Dynamic Xpath
Omówmy inny przykład.
Powiedz „id” pola nazwy użytkownika to „nazwa_użytkownika_1”, a XPath będzie // * [@ id = ’firstname_1?] . Po ponownym otwarciu strony „identyfikator” może się zmienić na „ 'Imię _11 ”. W takim przypadku test zakończy się niepowodzeniem, ponieważ WebDriver nie mógł znaleźć elementu. W takim przypadku zostanie zgłoszony StaleElementReferenceException.
W tym przypadku możemy użyć dynamicznej ścieżki xpath, takiej jak:
try { driver.findElement(By.xpath(“//*[contains(@id,firstname’)]”)).sendKeys(“Aaron”); } catch (StaleElementReferenceException e)
W powyższym przykładzie używana jest dynamiczna ścieżka XPATH i jeśli wyjątek nadal występuje, zostaje przechwycony.
Wniosek
Obsługa wyjątków jest istotną częścią każdego programu java, a także skryptu selenu. Możemy zbudować solidny i optymalny kod za pomocą obsługa wyjątków w inteligentny sposób . Najlepszą praktyką jest również obsługę wyjątków w skrypcie, który zapewni lepszy raport, gdy program zawiedzie z jakiegokolwiek powodu.
Tutaj próbowaliśmy opisać proces i strukturę obsługi wyjątków, która jest wymagana do zaimplementowania w skryptach selenowych.
Pamiętaj, że nie jest obowiązkowe, aby zawsze obsługiwać wyjątek w próbuj złapać blok. Możesz również zgłosić wyjątek w zależności od wymagań skryptu.
Nie należy ignorować wyjątków, ponieważ przerywają one wykonywanie programu. W tym samouczku omówiliśmy różne wyjątki i sposoby zmniejszenia szans na uzyskanie ich przez ręczne kontrole i kody.
Dodanie oczekiwania może kontrolować niektóre przypadki, takie jak „NoSuchElementException”, „ElementNotFoundException”, „ElementNotVisibleException”.
pytania i odpowiedzi do wywiadu ms sql
Następny samouczek # 20 : W nadchodzącym samouczku omówimy dostępne różne rodzaje ram testowych . Przeanalizowalibyśmy również wady i zalety korzystania z gotowego podejścia ramowego w testowaniu automatyzacji. Omówilibyśmy szczegółowo strukturę opartą na danych testowych.
Prosimy o wysyłanie zapytań związanych z obsługą wyjątków w Selenium WebDriver, jeśli takie masz.
rekomendowane lektury
- Wyjątki Java i obsługa wyjątków z przykładami
- Jak radzić sobie z alertami / wyskakującymi okienkami w Selenium WebDriver - Samouczek Selenium nr 16
- Samouczek AutoIt - pobieranie, instalacja i podstawowy skrypt AutoIt
- Cucumber Selenium Tutorial: Integracja Cucumber Java Selenium WebDriver
- Integracja Selenium z JMeter
- Wprowadzenie do Selenium WebDriver - samouczek Selenium # 8
- 30+ najlepszych samouczków dotyczących selenu: naucz się selenu z prawdziwymi przykładami
- Możliwość pracy w niepełnym wymiarze godzin jako freelancer dla ekspertów Selenium