How to use selenium 2 PageFactory init Elements with Wait.until()?

Viewed 22789

The code snippet below works fine, but I'm having a little trouble with the wait.until() line:

wait.until(new ElementPresent(By.xpath("//a[@title='Go to Google Home']")));

It works but I want to send my PageFactory WebElement homePageLink instead:

wait.until(new ElementPresent(homePageLink));

Is there any way to do that?

These new fangled Selenium 2 features have got my head in a bit of a spin and I can't find much documentation.

Thanks.

public class GoogleResultsPage extends TestBase {

    @FindBy(xpath = "//a[@title='Go to Google Home']")
    @CacheLookup
    private WebElement homePageLink;

    public GoogleResultsPage() {  
        wait.until(new ElementPresent(By.xpath("//a[@title='Go to Google Home']")));
        assertThat(driver.getTitle(), containsString("Google Search"));
    }  
}

public class ElementPresent implements ExpectedCondition<WebElement> {

    private final By locator;

    public ElementPresent(By locator) {
        this.locator = locator;
    }

    public WebElement apply(WebDriver driver) {
        return driver.findElement(locator);
    }
}
3 Answers
Related