您将如何去检查以查看某个特定WebElement是否已更新?硒网络驱动程序测试网页元素已更新
我有执行形式保存,然后将UI返回成功/出错信息的测试。
我做了一系列的保存和我需要测试,看看消息是否符合预期。
硒的速度非常快,浏览器没有机会赶上。
这是我有用于测试的错误消息的代码(有一个等效成功消息功能以及)
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未赶上那里硒。
我的解决方法到目前为止强制的Thread.sleep(2000),只是暂停位,以允许UI赶上。我知道它使用Thread.sleep()会皱起眉头。
即(伪代码)
page.setField("value");
page.save();
Thread.sleep(2000);
page.assertErrorMessage("Error message");
有没有什么办法让我查一下,看是否有WebElement已更新?如果是这样,我可以使用Selenium等待测试。
或者也许别人有一个建议如何做到这一点?
在此先感谢。
@ user1410479我认为这是正确的做法 - 只是试图等待正确的消息出现。如果你断言了一个预期的消息,它会工作得很好。如果你使用它来等待不应该出现的消息,它显然会让你的测试运行很长时间(每个这样的消息10秒)。 – 2012-07-20 14:28:51
感谢您对此的帮助。你的建议奏效了!我将上述方法改为2行!我不知道为什么它没有来到我的等待消息。隐式与显式等待的使用仍然让我感到困惑。 – pipplupp 2012-07-25 04:26:42