Исключения в Селене | Знайте, как обрабатывать исключения
Поскольку мир развивается в направлении разработки программного обеспечения, тестирование играет жизненно важную роль в обеспечении отсутствия дефектов в процессе. Автоматизированное тестирование с помощью Selenium является одним из таких инструментов, который помогает находить ошибки и устранять их. Исключения в Selenium — важная концепция, которая помогает нам обрабатывать ошибки и избегать программных сбоев. В этой статье об исключениях в Селеня дам вам полное представление об основах и различных методах обработки исключений.
Исключение — это событие или проблема, возникающая во время выполнения программы. Когда возникает исключение, нормальный поток программы останавливается и создается объект исключения. Затем программа пытается найти кого-то, кто может обработать возникшее исключение. Объект исключения содержит много отладочной информации, такой как иерархия методов, номер строки, в которой произошло исключение, тип исключения и т. д.
Когда вы начнете работать с Selenium webdriver, вы столкнетесь с различными исключениями в зависимости от кода, который вы пишете. Один и тот же код иногда работает правильно, а иногда просто нет. Всякий раз, когда вы разрабатываете какой-либо сценарий, вы пытаетесь предоставить код самого высокого качества, который отлично работает. Но, к сожалению, иногда исключения являются побочными эффектами сценариев, которые мы разрабатываем, и имеют тенденцию к сбою. Вот почему обработка исключений очень важна.
Механизм обработки исключений следует схеме, показанной на рисунке выше. Но если исключение не обрабатывается, это может привести к сбою системы. Вот почему обработка исключений очень важна. Теперь давайте двигаться дальше и понять, что представляют собой различные категории исключений.
Проверенное и непроверенное исключение
По сути, в Selenium есть 2 типа исключений, и они следующие:
- проверенное исключение
- Непроверенное исключение
Давайте подробно разберем эти два исключения.
- проверенное исключение
Это исключение, возникающее во время компиляции, также называемое исключениями времени компиляции. Если какой-то код в методе выдает проверенное исключение, то метод должен либо обработать исключение, либо указать исключение, используя бросает ключевое слово. - Непроверенное исключение
Это исключение, возникающее во время выполнения и вызываемое Исключения времени выполнения. В C++ все исключения не проверяются, но в Java исключения могут быть либо проверенными, либо непроверенными. Таким образом, компилятор не заставляет его обрабатывать или указывать исключение. Программисты должны указать или перехватить исключения.
class Exception{
public static void main(String args[]){
try{
//code that may raise an exception</span>
}
catch(Exception e){
// rest of the program
}
}
}
Приведенный выше код представляет собой исключение, в котором внутри блока try мы собираемся написать код, который может вызвать исключение, а затем это исключение будет обработано в блоке catch. Поняв это, давайте двинемся дальше и посмотрим на различные типы исключений, которые нарушают нормальный ход выполнения программы.
Типы исключений
Исключение WebDriver возникает, когда мы пытаемся выполнить какое-либо действие с несуществующим драйвером.
WebDriver driver = new InternetExplorerDriver();
driver.get("
driver.close();
driver.quit();
Когда мы пытаемся выполнить действие, т.е. принять() или отклонить(), которое не требуется в требуемом месте; дает нам это исключение.
try{
driver.switchTo().alert().accept();
}
catch (NoAlertPresentException E){
E.printStackTrace();
}
Когда мы пытаемся переключиться на окно, которого нет, выдает нам это исключение:
WebDriver driver = new InternetExplorerDriver();
driver.get("
driver.switchTo().window("Yup_Fail");
driver.close();
В приведенном выше фрагменте строка 3 выдает нам исключение, поскольку мы пытаемся переключиться на окно, которого нет.
Подобно исключению окна, исключение кадра в основном возникает при переключении между кадрами.
WebDriver driver = new InternetExplorerDriver();
driver.get("
driver.switchTo().frame("F_fail");
driver.close();
В приведенном выше фрагменте строка 3 выдает нам исключение, поскольку мы пытаемся переключиться на кадр, которого нет.
Это исключение возникает, когда WebDriver не находит веб-элемент в DOM.
WebDriver driver = new InternetExplorerDriver();
driver.get("
driver.findElement(By.name("fake")).click();
Теперь посмотрите, как продвигаться вперед в этих исключениях в Селен статью и увидеть различные методы, используемые для обработки исключений.
Методы обработки исключений
- Пытаться: Блок try используется для включения кода, который может вызвать исключение.
- Ловить: Блок catch используется для обработки исключения. Он должен использоваться только после блока try.
- Окончательно: finally блок — это блок, который используется выполнить важный код например, закрытие соединения, поток и т. д. Он всегда выполняется независимо от того, обрабатывается ли исключение или нет.
- Бросать: ключевое слово throw используется для создания исключения.
- Броски: Ключевое слово throws используется для объявления исключений. Он не генерирует исключение. Он указывает, что в методе может возникнуть исключение. Он всегда используется с сигнатурой метода.
Давайте рассмотрим небольшой пример, чтобы понять, как можно обработать выброшенное исключение с помощью методов исключения. Давайте посмотрим на код.
package Edureka;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.openqa.selenium.By;
import org.openqa.selenium.NoAlertPresentException;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Wait;
import org.openqa.selenium.support.ui.WebDriverWait;
public class Exceptionhandling {
public static void main(String[] args) throws InterruptedException, TimeoutException{
System.setProperty("webdriver.firefox.driver", "C:\\Selenium-java-edureka\\chromedriver_win32\\chromedriver.exe");
WebDriver driver = new FirefoxDriver();
WebDriverWait wait = new WebDriverWait(driver, 10);
driver.get("
try{
driver.findElement(By.xpath("//*[@id='register']")).click();
}catch (Exception e) {
System.out.println("Register element is not found.");
throw(e);
}
System.out.println("Hello");
}
}
Давайте подробно разберемся с функциями каждого метода.
Попробуйте метод
В приведенном выше коде я использовал блок try для ввода инструкции, которая выдает исключение. Здесь этот оператор driver.findElement(By.xpath(«//*[@id=’register’]»»)).клик(); выдает исключение, потому что на странице поиска Google Selenium не может найти конкретный элемент. Таким образом, после возникновения исключения нормальное выполнение программы будет прервано. Теперь давайте посмотрим, как это обрабатывается в блоке catch.
Поймать метод
Задача здесь состоит в том, чтобы обработать это исключение и продолжить выполнение программы. Для этого я написал блок catch, который будет обрабатывать выброшенное исключение. Его всегда следует писать после блока try. Поэтому, когда вы запустите программу, она напечатает остальные операторы.
Метод броска
Как вы все знаете бросать это ключевое слово, которое используется для передачи исключения. Но интересно то, что независимо от того, обработал блок catch исключение или нет, бросать() все равно вызовет исключение. Это приводит к нарушению нормального хода выполнения программы. В приведенном выше коде после обработки исключения блоком catch я написал оператор бросить (е); бросить исключение.
Метод бросков
Объявление Throws используется для объявления исключения. Например, он может объявить прерываемое исключение, исключение тайм-аута и т. д. Вот как можно использовать различные методы для обработки возникшего исключения в программе.
На этом мы подошли к концу этой статьи об исключениях в Selenium. Надеюсь, вы поняли концепции и помогли повысить ценность своих знаний.
Есть к нам вопрос? Пожалуйста, укажите это в разделе комментариев статьи «Исключения в Selenium», и мы свяжемся с вами.