2017-03-16 5 views
0

ich diesen Code für Unsichtbarkeit überprüfen bin mit:Warten auf mehrere Elemente unsichtbar Selen Java

WebDriverWait wait = new WebDriverWait(driver,40); 
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath(<some xpath>))); 

Das funktioniert perfekt, wenn es nur ein ist Element der XPath in der Webseite entspricht.

Ich habe drei auf der Webseite, die ich für ein Skript zu schreiben versuchen, und ich brauche Selen für alle drei zu warten.

Hinweis: Ich verwende keinen absoluten xpath.

+0

Haben Sie 3 webelement mit dem gleichen XPath haben? – NarendraR

+0

Ja, war das nicht klar von der Frage? – XChikuX

Antwort

2

ExpectedConditions.invisibilityOfElementLocated Überprüfen Sie das erste Element. In Ihrem Fall könnten Sie Ihre eigene Implementierung von ExpectedCondition schreiben, wo Sie prüfen müssen, ob das Objekt für jedes gefundene Element angezeigt wird.

Für das Beispiel (nicht getestet):

private static void waitTillAllVisible(WebDriverWait wait, By locator) { 

    wait.until(new ExpectedCondition<Boolean>() { 

     @Override 
     public Boolean apply(WebDriver driver) { 

      Iterator<WebElement> eleIterator = driver.findElements(locator).iterator(); 
      while (eleIterator.hasNext()) { 
       boolean displayed = false; 
       try { 
        displayed = eleIterator.next().isDisplayed(); 
       } 
       catch (NoSuchElementException | StaleElementReferenceException e) { 
        // 'No such element' or 'Stale' means element is not available on the page 
        displayed = false; 
       } 
       if (displayed) { 
        // return false even if one of them is displayed. 
        return false; 
       } 
      } 
      // this means all are not displayed/invisible 
      return true; 
     } 
    }); 
} 
+0

Sieht so aus, als könnte es funktionieren, habe aber Probleme beim Debuggen. Bitte korrigieren Sie "* hat keine Parameter *" und "* Methode überschreibt nicht Superklasse *" Fehler – XChikuX

+0

Kompiliert auf meinem Rechner. Welche Version von Java und Selen benutzt du? –

+0

Java 1.8, Selenium 3.0.1 – XChikuX