2017-11-17 120 views
-1

在應用程序中,很多字段都存在,並且所有字段都有過濾器(文本框)。所以一旦用戶在任何一個過濾器中輸入值,UI數據(UI表)將開始刷新。等待硒中的ui數據過濾器

我想等待數據在UI中加載,然後應用另一個過濾器。

有什麼辦法要等到數據被不使用的Thread.sleep

+0

見:我如何做X?(https://meta.stackoverflow.com/questions/253069/whats-the-appropriate-new-current-close-reason-for-how-do-i-do-x)對SO的期望是用戶提出問題不僅僅是研究回答他們自己的問題,研究,代碼嘗試和結果。這表明你已經花時間去嘗試幫助自己,它使我們避免重申明顯的答案,最重要的是它可以幫助你得到更具體和相關的答案!另請參見:[問] – JeffC

回答

0

沒有您提供進一步的細節加載,所有我可以推薦現在是FluentWait。例如:

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

感謝您的回覆....我有類似的情況在頁面中我們有很多過濾器,默認情況下所有數據都顯示.....現在我想申請過濾器一個接一個,然後再應用第二個(下一個)過濾器想要等待第一個(上一個)過濾器的數據過濾。另外,默認情況下「// tr」與一些數據一起存在。請幫我解決這個問題,因爲我對硒世界很陌生。 –

0

我能執行此使用下面的代碼 -

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))); 
    } 

}