2016-10-03 3 views
0

양식을 채우고 제출 버튼을 클릭하면 삽입 된 데이터가 내보기에 표시되는지 확인하기 전에 호출이 반환 될 때까지 기다리려고합니다.셀렌이 버튼 클릭 후 AJAX 요청 대기 완료

나는이 작업을 수행하는 방법을 알아 내려고하고 있습니다. 페이지 마크 업을 보면보기를 새로 고칩니다. 나에게 뭔가를 할 수있는 방법이 있습니까 : WebElement의 자식이 변경 될 때까지 기다리시겠습니까?

저는 부모님보기에 앉아서 삽입 된 데이터를 검색하기 전에 어린이의 변화를 모니터링 할 수 있다고 생각했습니다.

부모에 일종의 수신기를 설정하여 WebDriverWait이 작업을 수행하는지 확실하지 않았습니다. WebElement.

public WebElement getWebElement(String selector){ 
    return (new WebDriverWait(driver,5000)) 
    .until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(selector))); 
} 

public submitButton(){ 
    WebElement submit = getWebElement("#mybutton"); 
    WebElement gridDataParent = getWebElement("#myTable > tbody"); 

    //Not quite sure how to check for child changes, and start a listener here 

    submit.click(); 

} 

내가 아니, 내가 주어진 루트 아래에 변화를 모니터링 할 수있는 몇 가지 방법이있을 것 같아요 : 여기

나는 몇 가지 코드 노력하고있다인가?

단추를 전송하면 서버 호출을 수행하고 호출 후 데이터 집합을 새로 고칩니다. 당신이보고있는 요소까지 대기이 사용

답변

2

에 존재합니다. 그렇다면 먼저 데이터를 제출하기 전에 행 수를 계산하십시오. 그리고 테이블 데이터가 증가했는지 여부를 다시 확인하십시오. 데이터 세트가 페이징을 포함하기 때문에

 int numberCountBeforeTableLoad = driver.findElements(By.cssSelector("your table rows locator")).size();//count row number of your desired table before submitting data 
     //here submit your data and wait until your table loads with a row count more than previous row count 
     WebDriverWait wait = new WebDriverWait(driver, 20); 
     wait.until(ExpectedConditions.numberOfElementsToBeMoreThan(By.cssSelector("your table rows locator"), numberCountBeforeTableLoad)); 
+0

를 새로 않습니다. – Fallenreaper

0

시도는 아마 당신은 테이블 데이터에 대한 업데이트를 기다리고있다, 지금까지 내가 이해할 수로 DOM

waitForElementPresent(locator) 
+0

, 그것은 현재 페이지에 나타나는 가능성은 알 수없는,하지만 해당 페이지의 데이터는 내가 그 답을 좋아 – Fallenreaper