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.

Elemento no interactuable al hacer clic en cuadro de texto en diálogo modal con Selenium C#

Estoy intentando introducir un ID de usuario y una contraseña. El ID de usuario y la contraseña están en un diálogo modal. Pero cuando uso Click en WebElement, devuelve excepciones element not interactable.

Aquí está mi código:

var btnPopUpLogin = driver.FindElement(By.XPath("//a[text() = 'Login']"));
btnPopUpLogin.Click();
Console.WriteLine("Button Dialog Login Clicked");

Thread.Sleep(TimeSpan.FromSeconds(5));

var formLogin = driver.FindElement(By.Id("form_login"));
if (formLogin.Displayed)
{
    Console.WriteLine("Form Login Show");

    var userInput = driver.FindElement(By.Id("userid"));
    userInput.Click();
    Console.WriteLine("Input User ID");
    userInput.SendKeys("userid");

    var passwordInput = driver.FindElement(By.Id("password"));
    passwordInput.Click();
    Console.WriteLine("Input Password");
    passwordInput.SendKeys("password");

    var btnLogin = driver.FindElement(By.XPath("//input[text() = 'Login']"));
    btnLogin.Click();
    Console.WriteLine("Button Login Clicked");

    Thread.Sleep(TimeSpan.FromSeconds(3));
}

Se produjo una excepción al ejecutar esto: userInput.Click();

Aquí están los elementos HTML:
enter image description here

Tags:  ,

Answer

  1. Avatar for davy.ai

    La excepción element not interactable ocurre cuando el elemento con el que se está intentando interactuar no se encuentra en un estado que le permita ser interactuado. En este caso, parece que el campo de entrada del ID de usuario puede que no esté completamente cargado o visible en el momento en que se llama a userInput.Click().

    Para resolver esto, se puede intentar agregar un pequeño tiempo de espera antes de interactuar con el campo de entrada. Por ejemplo, se puede reemplazar userInput.Click(); con:

    WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
    wait.Until(ExpectedConditions.ElementToBeClickable(userInput)).Click();
    

    Este código esperará hasta 10 segundos hasta que el campo de entrada del ID de usuario sea clickeable, y luego realizará la acción de clic. De manera similar, también se puede agregar un tiempo de espera antes de interactuar con el campo de contraseña y el botón de inicio de sesión.

    Otra cosa a verificar es si los valores de ID para los campos de entrada del ID de usuario y la contraseña son correctos. Asegúrese de que los IDs coincidan con los IDs reales de los elementos en el código HTML.

Comments are closed.