2016-05-22 11 views
1

So habe ich diese generische Funktion, die auf ExpectedCondition für meine Elementbasis warten:Selen: wie mehr als 2 Ausnahme ignorieren

def findMyElement(expectedCondition: (By) => ExpectedCondition[WebElement], by: By, timeOut: Long): WebElement = { 

    createFluentWait(timeOut).until(expectedCondition(by)) 
    driver.findElement(by) 
    } 

def createFluentWait(timeOut: Long): FluentWait[WebDriver] = { 

    new FluentWait[WebDriver](driver) 
     .withTimeout(timeOut, TimeUnit.SECONDS) 
     .pollingEvery(1, TimeUnit.SECONDS) 
     .ignoring(classOf[NoSuchElementException], (classOf[StaleElementReferenceException])) 
    } 

Also meine Frage ist, wie zu einer anderen hinzuzufügen Exceptions meine createFluentWait Funktion, um vermeiden Sie Exception vor dem Timeout? (Ohne Berücksichtigung bekommt nur 2)

Antwort

1

Sie sollten einen anderen .ignoring Anruf an Ihre createFluentWait Funktion hinzufügen können. Welche anderen Ausnahmen wollten Sie ignorieren?

def createFluentWait(timeOut: Long): FluentWait[WebDriver] = { 

    new FluentWait[WebDriver](driver) 
     .withTimeout(timeOut, TimeUnit.SECONDS) 
     .pollingEvery(1, TimeUnit.SECONDS) 
     .ignoring(classOf[NoSuchElementException]) 
     .ignoring(classOf[StaleElementReferenceException]) 
     .ignoring(classOf[SomethingElseException]) 
} 
+0

Ist es gut, mehrere Ausnahmen hinzuzufügen? oder vielleicht um es zu vermeiden? Ich will dies, um zu versuchen, bis Timeout erreicht, ich möchte auch ElementNotVisibleException und NoSuchElementException ignorieren –

+0

Es hängt davon ab, welche Ausnahme Sie erhalten, warum das passiert und ob das erwartet wird oder nicht. Ich finde oft, dass 'NoSuchElementException' und' StaleElementReferenceException' die einzigen beiden sind, die ich benutze. –

+0

Ist die Ausnahmenreihenfolge auch ein Problem? –

0

können Sie verketten eine andere ignoring

def createFluentWait(timeOut: Long): FluentWait[WebDriver] = { 

    new FluentWait[WebDriver](driver) 
     .withTimeout(timeOut, TimeUnit.SECONDS) 
     .pollingEvery(1, TimeUnit.SECONDS) 
     .ignoring(classOf[NoSuchElementException, (classOf[StaleElementReferenceException])) 
     .ignoring(classOf[NullPointerException, (classOf[StaleElementReferenceException])) 
}