我尝试写Arquillian测试。我想等到ajax请求完成(当outputText上的值改变时)。我尝试使用以下代码实现这一点:
Graphene.waitAjax().until().element(outputText).text().equals("something");
但它不起作用(等待)。
JSF代码(在test.xhtml页面上):
<h:form id="myForm">
<h:outputText value="#{controller.text}" id="textValue" />
<h:commandButton value="change" id="changeButton">
<f:ajax render="textValue" listener="#{myCounter.changeText()}" />
</h:commandButton>
</h:form>
测试方法:
@Test
public void myTest(){
browser.navigate().to(contextPath + "faces/test.xhtml");
WebElement changeButtonElement = browser.findElement(By.id("myForm:changeButton"));
WebElement valueElement = browser.findElement(By.id("myForm:textValue"));
changeButtonElement.click();
Graphene.waitAjax().until().element(valueElement).text().equals("something");
assertEquals("something", valueElement.getText());
}
输出:
org.junit.ComparisonFailure: expected:<[something]> but was:<[init]>