Я использую EvenfiringWebdriver, и код выполняется нормально. Я намеренно даю неправильный xpath, чтобы убедиться, что мой фреймворк захватывает NoSuchElementException или TimeOutException, и позже я буду обрабатывать это в блоке так, как мне нужно. Но проблема в методе beforeFindBy, возникает исключение, и метод onException не улавливает это, вместо этого исключение выдается и отображается на моей консоли.
Если я просто установил правильный xpath, все работает нормально, поэтомуМой фреймворк в порядке, например, если я закрываю браузер во время выполнения теста, вызывается блок onException и запускается код исключения WebDriver, только в случае ожидаемого условия и ожидания, пока исключение не будет зафиксировано.
public class EventHandler extends AbstractWebDriverEventListener {
private final static Logger logger = Logger.getLogger(Wrapper.class.getName());
protected EventFiringWebDriver driver = TheDriver.getInstance().getDriver();
protected static WebDriverWait waitn;
protected JavascriptExecutor js;
// public static WebDriverWait waitn;
@Override
public void beforeFindBy(By by, WebElement element, WebDriver driver) {
ensurePageIsLoaded(); // before anything be sure you are ready!
logger.info("Verifying if element " + by.toString() + " is interactable...");
//WebDriverWait waitn = new WebDriverWait(driver, 100 * Integer.parseInt(Wrapper.dataOf("FluentDelay")[0]));
waitn = new WebDriverWait(driver, 100 * 2);
waitn.until(ExpectedConditions.presenceOfElementLocated(by));
}
@Override
public void onException(Throwable throwable, WebDriver driver) {
//String theException = throwable.getClass().toString();
logger.warn("Entered the exception block");
if (throwable instanceof NoSuchElementException) {
logger.error(
"The element was either not present or was uninteractable due to an iFrame or a wrong locator");
// logger.error(throwable.getMessage());
} else if (throwable instanceof TimeoutException) {
logger.error("Expected wait time reached. Webdriver wait has timed out.");
} else if (throwable instanceof WebDriverException) {
logger.error("Unable to interact with browser sessions, closing the browser");
} else if (throwable instanceof UnhandledAlertException) {
logger.error("An Alert box poped up and was not handled by the script");
logger.error(throwable.getMessage());
} else if (throwable instanceof ElementClickInterceptedException) {
logger.warn(
"Some popup appeared while performing a click , Scripts will reatempt to click after a short delay");
Wrapper.hangon(5);
} else if (throwable instanceof Exception) {
logger.error("Unknown error");
logger.error(throwable.getMessage());
} else {
logger.error("Unknown error. The exception is not handled" + throwable.getMessage());
}
}
Следующая строка кода никогда не выполняется при возникновении исключения
logger.warn("Entered the exception block");
Пожалуйста, помогите мне разобраться в проблеме.