2017-11-17 1 views
-1

응용 프로그램에서 많은 필드가 있고 모든 필드에 필터 (텍스트 상자)가 있습니다. 그래서 일단 사용자가 필터 중 하나의 값을 입력하면 즉시 UI 데이터 (UI 테이블)가 새로 고침되기 시작합니다.셀렌의 ui 데이터 필터 대기

UI에 데이터가로드 될 때까지 기다렸다가 다른 필터를 적용하려고했습니다.

데이터가 귀하가 제공 자세한 내용없이 Thread.sleep를

+0

참조 : [어떻게 X를해야합니까?] (https://meta.stackoverflow.com/questions/253069/whats-the-the-new-current-close-for-do-do-do-do-x) SO에 대한 기대는 사용자가 질문을하는 연구가 자신의 질문에 답하는 연구뿐만 아니라 공유 그 연구, 코드 시도 및 결과. 이것은 시간을내어 자신을 도우려는 것을 보여 주며, 명백한 답을 되풀이하지 않아도되며, 무엇보다도보다 구체적이고 관련성있는 답변을 얻는 데 도움이됩니다! 또한보십시오 : [ask] – 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))); 
    } 

}