Элемент управления не передается в метод onExcption, когда в beforeFindBy возникает исключение TimeoutException - PullRequest
0 голосов
/ 10 ноября 2019

Я использую 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");

Пожалуйста, помогите мне разобраться в проблеме.

...