Saltar al contenido

Selenium Webdriver esperar al hacer clic en el elemento?

Solución:

prueba esto :

WebDriverWait wait = new WebDriverWait(driver , 1000) ;
wait.until(ExcepctedConditions.elementToBeClickable(ById("element"));

El elemento puede ser el ID de cualquier elemento presente en la siguiente página a la que se le redirige. Una vez que la página se cargue por completo, comenzará a ejecutar su código.

En lugar de Click podrías intentar usar SendKeys. diferente a Click, SendKeys no espera a que la página termine de cargarse antes de reanudar la ejecución del código. Entonces puedes hacer algo como esto:

WebDriverWait wait = new WebDriverWait(browser, new TimeSpan(0, 5, 0));

elem.SendKeys(Keys.Enter);    
wait.Until<bool>((_driver) =>
{         
     //Check here if results have loaded yet
     return true;
});

Como nota al margen, estoy bastante seguro Until toma un IWebBrowser como entrada, no como elemento, por lo que no puede hacer clic en elem.

Además de la solución de prestomanifesto, puedo ofrecer una solución menos que ideal a la que implementé para resolver este problema. Resulta que está lanzando una excepción, sin respuesta, etc., así que simplemente lo rodeé en un intento de captura y luego esperé a que se cerrara la ventana emergente, lo que parece funcionar bien.

Puede sustituir lo que quiera en su bucle, solo asegúrese de poner un contador para que no se repita para siempre.

try
{
    element.Click();
}
catch
{
    cnt++;
    do
    {
      //wait for whatever
      cnt++;
      Thread.Sleep(1000);
      // Wait for 30 seconds for popup to close
    } while (!string.IsNullOrEmpty(browser.CurrentWindowHandle) && cnt < 30);
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *