diff --git a/functional-test/src/main/java/org/zanata/page/administration/ManageUserAccountPage.java b/functional-test/src/main/java/org/zanata/page/administration/ManageUserAccountPage.java
index 0368fb4cc1..1c005b80b9 100644
--- a/functional-test/src/main/java/org/zanata/page/administration/ManageUserAccountPage.java
+++ b/functional-test/src/main/java/org/zanata/page/administration/ManageUserAccountPage.java
@@ -28,6 +28,7 @@
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.zanata.page.AbstractPage;
+import com.google.common.base.Predicate;
/**
* @author Damian Jansen djansen@redhat.com
@@ -36,9 +37,6 @@
public class ManageUserAccountPage extends AbstractPage
{
- @FindBy(id = "userdetailForm:usernameField:username")
- private WebElement usernameField;
-
@FindBy(id = "userdetailForm:passwordField:password")
private WebElement passwordField;
@@ -56,6 +54,9 @@ public class ManageUserAccountPage extends AbstractPage
private Map roleMap;
+ // username field will trigger ajax call and become stale
+ private By usernameBy = By.id("userdetailForm:usernameField:username");
+
public ManageUserAccountPage(WebDriver driver)
{
super(driver);
@@ -67,9 +68,18 @@ public ManageUserAccountPage(WebDriver driver)
roleMap.put("user", "4");
}
- public ManageUserAccountPage enterUsername(String username)
+ public ManageUserAccountPage enterUsername(final String username)
{
- usernameField.sendKeys(username);
+ waitForTenSec().until(new Predicate()
+ {
+ @Override
+ public boolean apply(WebDriver input)
+ {
+ WebElement usernameField = input.findElement(usernameBy);
+ usernameField.sendKeys(username);
+ return input.findElement(usernameBy).getAttribute("value").equals(username);
+ }
+ });
return new ManageUserAccountPage(getDriver());
}
@@ -117,7 +127,15 @@ public ManageUserPage cancelEditUser()
public ManageUserAccountPage clearFields()
{
- usernameField.clear();
+ waitForTenSec().until(new Predicate()
+ {
+ @Override
+ public boolean apply(WebDriver input)
+ {
+ input.findElement(usernameBy).clear();
+ return input.findElement(usernameBy).getAttribute("value").isEmpty();
+ }
+ });
passwordField.clear();
passwordConfirmField.clear();
return new ManageUserAccountPage(getDriver());