2016-03-21 2 views
1
By panelCollapseSelector = By.cssSelector(".panel-heading+.panel-collapse"); 
waitForElementToDisappear(panelCollapseSelector); 

Der obige Code wartet auf das erste Feld der Seite. Ich würde gerne darauf warten, dass alle Panels zusammenbrechen. Wie kann ich diese Schleife durchlaufen lassen, um auf alle Seiten der Seite zu warten.waitForElementToDis wird für alle Seiten der Seite angezeigt

Code vor Zusammenbruch

<div class="panel-collapse collapse in" style="height: auto;"> 

Code nach Zusammenbruch

<div class="panel-collapse collapse" style="height: 0px;"> 
+0

Wie sieht das HTML für Panels aus, die noch nicht kollabiert sind? Und für Panels, die zusammengebrochen sind? –

+0

@BreaksSoftware hinzugefügt. – tarun14110

Antwort

1

Eine einfache Lösung zu erhalten wäre es, auf 0 Elemente zu warten, die den nicht zusammengebrochenen Panels entsprechen.

Ein möglicher CSS-Selektor alle nicht bekommen Platten zusammengebrochen:

".panel-heading:not(.in) + .panel-collapse:not(.in)" 

dann mit einem Lambda-Ausdruck warten:

WebDriverWait wait = new WebDriverWait(driver, 20); 
wait.until((WebDriver drv) -> drv.findElements(By.cssSelector(
    ".panel-heading:not(.in) + .panel-collapse:not(.in)")).size() == 0); 

oder mit den zu erwartenden Bedingungen:

WebDriverWait wait = new WebDriverWait(driver, 20); 
wait.until(ExpectedConditions.not(ExpectedConditions.presenceOfAllElementsLocatedBy(
    By.cssSelector(".panel-heading:not(.in) + .panel-collapse:not(.in)")))); 
0

Sie können für alle Panels gewartet 60 Sekunden dieses Java-Methode versuchen Zusammenbruch

int timeout=60; 
while(driver.findElement(By.cssSelector(".panel-heading+.panel-collapse")).getAttribute("style").contains("height: auto;") && timeout > 0) {       
try { 
    if(timeout>1) 
     { 
     timeout--; 
     System.out.println("====== Waiting for Collapsing Panels ======");        
     Thread.sleep(1000); 
     } 

    } 
    catch(Exception e) { 
     } 
Verwandte Themen