2017-11-17 3 views
-1

In einer Anwendung sind viele Felder vorhanden und alle Felder haben Filter (Textfeld). Sobald der Benutzer den Wert in einem der Filter sofort eingeben wird, werden die UI-Daten (UI-Tabelle) sofort aktualisiert.warten auf ui Datenfilter in Selen

Ich wollte warten, bis Daten in UI geladen werden und dann den anderen Filter anwenden.

Gibt es eine Möglichkeit, zu warten, bis die Daten ohne Thread.sleep mit geladen werden

+0

Siehe auch: [Wie kann ich tun X?] (Https://meta.stackoverflow.com/questions/253069/whats-the-appropriate-new-current-close-reason-for-wie-do-i-do-x) Die Erwartung an SO ist, dass der Benutzer, der eine Frage stellt, nicht nur Recherchen anstellt, sondern seine eigenen Fragen beantwortet diese Forschung, Code-Versuche und Ergebnisse. Dies zeigt, dass Sie sich die Zeit genommen haben, sich selbst zu helfen, es rettet uns davor, offensichtliche Antworten zu wiederholen, und vor allem hilft es Ihnen, eine spezifischere und relevantere Antwort zu erhalten! Siehe auch: [ask] – JeffC

Antwort

0

Ohne weitere Details von Ihnen zur Verfügung gestellten, alles, was ich jetzt empfehlen kann, ist FluentWait. Zum Beispiel:

final WebDriver driver = ...  
new FluentWait<>(driver).withTimeout(30, SECONDS) 
    .pollingEvery(1, SECONDS) 
    .ignoring(NoSuchElementException.class) 
    .until(
     webDvr -> !webDvr.findElements(By.xpath("//tr")).isEmpty() 
    ); 
+0

Danke für deine Antwort .... Ich habe ein Szenario wie auf der Seite wir haben viele Filter und standardmäßig werden alle Daten angezeigt ..... Nun wollte ich Filter nacheinander anwenden und vor dem Anwenden der zweite (nächste) Filter wollte warten, bis der Datenfilter für den ersten (vorherigen) Filter ausgelesen wurde. Auch standardmäßig ist "// tr" mit einigen Daten vorhanden. Bitte helfen Sie mir, dies zu lösen, da ich neu in der Selenwelt bin. –

0

konnte ich die Lage, dies unter Code auszuführen -

public boolean isElementDisplayed(WebElement element) { 
     try {    
       WebDriverWait wait = new WebDriverWait(driver, 5); 
       wait.until(ExpectedConditions.visibilityOf(element)); 
       return element.isDisplayed(); 
      } catch (Exception e) { 
       return false; 
      } 
} 


public void loadingTimer(){ 

    WebElement element = driver.findElement(By.xpath("//span[contains(text(),'Loading...')]")); 

    if (isElementDisplayed(element)) { 
    WebDriverWait wait = new WebDriverWait(driver , 5); 
    wait.until(ExpectedConditions.not(ExpectedConditions.visibilityOf(element))); 
    } 

}