C# Selenium simula la liberación de una tecla (keyup) con ChromeDriver.
Actualmente estoy probando el comportamiento de un campo de entrada de texto que aplica un filtrado en una lista cuando se escribe el término de búsqueda y se activa el evento keyup.
Tengo el siguiente fragmento de código:
public IWebElement txtSearchInput => _chromeDriver.FindElement(By.XPath("//input[contains(@class, 'search-input')]"));
public void TypeSearchInput(string searchTerm)
{
txtSearchInput.Click();
txtSearchInput.SendKeys(searchTerm);
}
que agrega con éxito el término de búsqueda en el campo de entrada, pero no activa el filtrado porque no se simula el evento keyup (por lo que la lista no se filtra).
Lo que intenté hacer hasta ahora fue agregar el método anterior con txtSearchInput.SendKeys(Keys.Up);
, pero no funcionó y no veo ninguna solución alternativa para esto.
Aquí tienes una referencia de la implementación frontend escrita en Angular:
<input type="text" class="search-input" placeholder="Escribe para filtrar..." [(ngmodel)]="searchTerm" (keyup)="filterUsers()">
Cualquier idea o ayuda sería muy apreciada. Solo quería resaltar que la configuración es SpecFlow, Selenium, ChromeDriver, VS 2022. Gracias.
davy.ai
Basándonos en la información proporcionada, parece que el problema está relacionado con el evento simulado de tecleo hacia arriba (keyup) que no se activa después de escribir el término de búsqueda.
Una posible solución es utilizar la clase
Actions
de Selenium para realizar la simulación del evento keyup. Aquí tienes un ejemplo:En este ejemplo, estamos utilizando la clase
Actions
para enviar el eventoKeys.Enter
a la entrada de búsqueda después de escribir el término de búsqueda. Esto debería activar el comportamiento de filtrado en la aplicación front-end que has compartido.Espero que esta solución te sea útil. Avísame si tienes alguna otra pregunta o preocupación.