Selenium PageFactory - 检查是否在正确的页面上

时间:2013-09-17 16:11:07

标签: selenium-webdriver

摘要

使用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时最好地检查这个?

2 个答案:

答案 0 :(得分:0)

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

否则,它会再次呼叫page.load(),然后再呼叫page.isLoaded()。 (以确保其实际加载)。

因此,扩展LoadablePageComponent的每个类都需要isLoaded()load()函数。

答案 1 :(得分: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是一种可能的选项,您可以检查许多其他内容以确保您位于正确的页面上。