es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

C# Selenium: No se puede capturar la excepción al utilizar wait.Until

Cuando se utiliza wait.Until() en un bloque try / catch, si el elemento no está presente, se lanza la excepción NoSuchElementException. Sin embargo, cuando intento capturar la excepción, aún así obtengo el error.

        try
        {
            wait.Until(el => el.FindElement(By.Id("courseTestItem")));
            driver.Close();
            driver.SwitchTo().Window(driver.WindowHandles.Last());
            Console.WriteLine("Saltado: " + courses[0].Item1.Text + " (Tiene prueba)");
        }
        catch (OpenQA.Selenium.NoSuchElementException) { }

Incluso intenté simplemente utilizar catch (Exception e) { } y aún así no logré capturar el error.

Imagen con el error

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema aquí es que NoSuchElementException no está siendo capturada porque está siendo lanzada por el método FindElement(), no por el método wait.Until(). Para capturar adecuadamente la excepción, debes modificar tu código de la siguiente manera:

    try
    {
        var element = wait.Until(el => el.FindElement(By.Id("courseTestItem")));
        driver.Close();
        driver.SwitchTo().Window(driver.WindowHandles.Last());
        Console.WriteLine("Omitido: " + courses[0].Item1.Text + " (Tiene prueba)");
    }
    catch (OpenQA.Selenium.NoSuchElementException)
    {
        // Maneja la excepción aquí
        Console.WriteLine("El elemento no fue encontrado.");
    }
    

    Ten en cuenta que ahora estamos asignando el resultado de FindElement() a una variable y capturando la excepción lanzada por ese método. Esto debería permitirte manejar adecuadamente la excepción sin encontrar el error que estabas viendo anteriormente.

Comments are closed.