1

概括

使用 PageFactory,如何确保将正确的页面传递给适当的页面对象?例如,确保将真实的登录页面传递给 LoginPage 对象的实例。

细节

我在PageObjects文档中注意到它们解释了如何在构造函数中检查您是否在正确的页面上。例如

    // Check that we're on the right page.
    if (!"Login".equals(driver.getTitle())) {
        // Alternatively, we could navigate to the login page, perhaps logging out first
        throw new IllegalStateException("This is not the login page");
    }

但是,在阅读PageFactory文档时,他们没有解释如何检查是否传入了正确的页面。他们只是继续尝试运行测试。使用 PageFactory 时如何最好地检查这一点?

4

2 回答 2

0

测试应该调用page.get(). 然后 get 函数将调用isLoaded(). 如果page.isLoaded()没有抛出异常,那么它将假定它已加载,并返回。

否则,它将调用page.load(),然后page.isLoaded()再次调用。(以确保其实际加载)。

因此,您扩展的每个类都LoadablePageComponent需要具有isLoaded()andload()功能。

于 2013-09-17T17:05:07.367 回答
0

您可以在构造函数中放置一个断言来检查 URL 是否有效,例如

MyPage(WebDriver driver) {
    PageFactory.initElements(driver, this);

    assert wait.until(currentURIIs(new URI("http://www.mydomain.com/mypage.html")));
}

以上是使用以下预期条件:

public static ExpectedCondition<Boolean> currentURIIs(final URI pageURI) {
    new ExpectedCondition<Boolean>() {
        @Override
        Boolean apply(WebDriver driver) {
            new URI(driver.currentUrl) == pageURI;
        }
    }
}

您当然可以搜索您知道页面上的元素,或任何其他唯一标识功能。检查当前页面 URI 是一种可能的选择,您可以检查许多其他内容以确保您在正确的页面上。

于 2013-09-19T10:58:29.947 回答