1

特定のWebElementが更新されているかどうかを確認するにはどうすればよいですか?

フォームの保存を実行するテストがあり、UIが成功/エラーメッセージを返します。

私は一連の保存を行っており、メッセージが期待どおりであるかどうかをテストして確認する必要があります。

Seleniumは非常に高速であるため、ブラウザーが追いつく機会がありません。

これは私がエラーメッセージをテストするために持っているコードです(同等の成功メッセージ関数もあります)

    public void assertErrorMessage(String errorMsg) {

    // set the wait time a bit so the page can load.
    driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
    List<WebElement> results = driver.findElements(By.xpath("//div[@id='lift__noticesContainer__']/descendant::*"));
    boolean success = false;
    String message = "";
    for (WebElement result : results) {

        String id = result.getAttribute("id");
        if (id.contains("___error")) {
            success = true;
        }
        if (result.getTagName().equals("li")) {
            message += result.getText().trim();
        }
    }
    Assert.assertTrue(success, "No error message generated");
    Assert.assertTrue(message.equals(errorMsg), "Expecting message: \"" + errorMsg + "\" but got \"" + message + "\"");

}

これが書かれているように、これは特定の存在を探し、<div>特定の属性が含まれているかどうかを確認します。もしそうなら、メッセージを受け取ります。

問題は、これは常に当てはまり、メッセージが前のメッセージと異なるために私のテストは失敗するということですが、UIはセレンの場所に追いついていないのです。

これまでの私の解決策は、UIが追いつくことができるように、Thread.sleep(2000)を少し一時停止するように強制することです。Thread.sleep()を使用することは嫌われていることを私は知っています。

すなわち(擬似コード)

page.setField("value");
page.save();
Thread.sleep(2000);
page.assertErrorMessage("Error message");

WebElementが更新されているかどうかを確認する方法はありますか?もしそうなら、私はそれをテストするためにSelenium待機を使用することができます。

または、おそらく他の誰かがこれを行う方法についての提案を持っていますか?

前もって感謝します。

4

1 に答える 1