2016-10-03 13 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

は、それが現在のページに表示される可能性がunknowですが、特定のページのデータは、私はその答えを好き – Fallenreaper

関連する問題