3

当单击浏览器的后退按钮(或前进或刷新)时,我想对我的页面的行为进行单元测试(jUnit 4)。

我可以在单元测试中以某种方式模拟浏览器的后退/前进/刷新按钮吗?是否有提供此类功能的实用程序类?

第二次编辑:

我了解 Wicket 测试工具不会模拟具有完整历史记录的浏览器。据我了解,我需要以下两件事来从单元测试中模拟浏览器的行为:

(1) Wicket 必须告诉我,当我调用WicketTester.startPage()或时发出了什么确切的请求(例如 URL) WicketTester.clickLink()

(2) Wicket 必须再次处理相同的请求,例如通过接受先前由 (1) 记录的 URL。

我想以一种兼容的方式来执行此操作WicketTesterFormTester等等,因为我在这些类中使用组件查找器、断言和更多更好的功能。这意味着我必须从 Wicket 设施发出请求,而不是从 HttpUnit / HtmlUnit / Selenium 等外部客户端发出请求。

4

3 回答 3

1

WicketTester 肯定不支持这一点,它明确使用不支持后退按钮的虚拟 Web 应用程序来节省资源。

我怀疑在 Wicket 中模拟会很痛苦......

您最好的选择可能是使用基于浏览器的测试工具,例如Selenium RC。我自己没有尝试过,但它确实有一种goBack()方法可以模拟点击浏览器后退按钮。

于 2010-02-27T16:32:22.517 回答
1

查看HtmlUnit ,您可以使用History类模拟返回和转发事件。

@Test
public void testHistory() throws IOException {
    // Create a web client
    final WebClient webClient = new WebClient();

    // Surf to a page
    final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net/");

    // Click "Get started" link
    page.getAnchorByHref("gettingStarted.html").click();

    // Get History
    History history = webClient.getCurrentWindow().getHistory();

    // Current page
    assertEquals("http://htmlunit.sourceforge.net/gettingStarted.html",
                 history.getUrl(history.getIndex()).toString());

    // Go back one page
    history.back();
    assertEquals("http://htmlunit.sourceforge.net/",
                 history.getUrl(history.getIndex()).toString());
}
于 2010-02-27T16:48:22.597 回答
0

您不能在 wicket 单元测试中模拟“返回”功能,它完全超出了 wicket 所做的范围,但是您可以测试单击返回时会发生的几乎任何事情

发布有关您要测试的内容的更具体的内容,通常,后退按钮只会在检票口中为您提供一堆“分离的”组件,您可以测试这些

于 2010-03-02T01:52:48.720 回答