2017-06-02 2 views
0

Korrekt warten, bis ein Element verschwindet?Korrekt warten, bis ein Element verschwindet?

Ich habe einen AJAX-Lader, der nach zum Beispiel Klicken auf eine Schaltfläche lädt, ist meine Methode richtig, um auf eine bestimmte Lastleiste zu warten, die die volle Breite und Höhe eines Bildschirms zu verschwinden braucht?

public void waitUntilAjaxLoaderDisapears() { 
    // Wait up to 2minutes for the element to disappear 
    WebDriverWait ajaxWait = new WebDriverWait(this.driver, 60); 
    ajaxWait.pollingEvery(100, TimeUnit.SECONDS); 
    try { 
     //tempWait.until(ExpectedConditions.invisibilityOfElementLocated(By.cssSelector(".modal-body"))); 
     ajaxWait.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("//*[contains(@class, 'ajax_loader')]"))); 
    } catch (UnhandledAlertException e) { 
     Alert alert = driver.switchTo().alert(); 
     alert.accept(); 
    }catch (NoAlertPresentException e) { 
     // 
    }catch (StaleElementReferenceException e) { 
     // do nothing 
    } catch (NullPointerException e) { 
     // do nothing 
    } catch (Exception e) { 
     // do nothing 
    } 
} 
+0

"screen to disappear" können wir ein Webelement für diesen Bildschirm erstellen? –

+0

@santhosh kumar, wenn der Ladebildschirm erscheint, kann ich bestätigen, dass der Locator wie oben aufgeführt ist – Gbru

+2

eine Beobachtung ist Polling-Zeit sollte weniger als die tatsächliche Wartezeit sein. Es muss weniger als 60 sein –

Antwort

1

Ich denke, ich habe das Problem. Die Abfragezeit sollte kürzer als die Gesamtwartezeit sein. So kann es sein,

WebDriverWait ajaxWait = new WebDriverWait(this.driver, 60); 
ajaxWait.pollingEvery(**5**, TimeUnit.SECONDS); 

Statt

WebDriverWait ajaxWait = new WebDriverWait(this.driver, 60); 
ajaxWait.pollingEvery(100, TimeUnit.SECONDS); 

Hope this Ihnen hilft. Vielen Dank.

Verwandte Themen