2015-07-30 12 views
6

Ho trovato che in C# se si utilizza lo WebDriverWait class o lo DefaultWait class, in entrambi i casi il metodo IgnoreExceptionTypes sembra non funzionare.IgnoreExceptionTypes non funziona (C# Webdriver)

I.e. in entrambi i casi quando si esegue contro la mia pagina viene lanciato un numero StaleElementReferenceException nonostante io stia istruendo il codice per ignorare queste eccezioni.

WebDriverWait esempio:

public void WaitElementToBeClickable(IWebElement element) 
    { 
     var wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(60)); 
     wait.IgnoreExceptionTypes(typeof(NoSuchElementException), typeof(StaleElementReferenceException)); 
     wait.Until(ExpectedConditions.ElementToBeClickable(element)); 
    } 

DefaultWait esempio:

public IWebElement SafeWaitForDisplayed(IWebElement webElement) { 

    var w = new DefaultWait<IWebElement>(webElement); 
      w.Timeout = TimeSpan.FromSeconds(30); 
      w.IgnoreExceptionTypes(typeof(NoSuchElementException), typeof(StaleElementReferenceException)); 
      return w.Until(ctx => 
      { 
       var elem = webElement; 
       if (elem.Displayed) 
        return elem; 
       else 
        return null; 
      }); 
    } 

Qualsiasi suggerimento ben accetto. Sembra che ci sia molto poco in rete sull'uso di questo particolare metodo e altri hanno trovato che non funziona anche senza soluzioni alternative suggerite.

risposta

3

Il IgnoreExceptionTypes durerà solo fino all'esaurimento. Sto usando il DefaultWait e mi aspettavo che restituisse nulla. Non è così. Quando viene raggiunto il timeout, si genera un'eccezione. Di conseguenza l'ho racchiuso in un try catch per gestire l'eccezione in modo appropriato al timeout.

Problemi correlati