htmlunit中可以通过URL轻松获取一个HtmlPage,但是却没有提供根据Html字符串创建一个HtmlPage。

通过Url获取一个page

HtmlPage page = webClient.getPage("http://www.baidu.com/");

但是源码包里面有通过URL下载网页源码,并通过StringWebResponse构建一个HtmlPage对象,
所以利用这一个机制我们便可以利用StringWebResponse 手动构建一个HtmlPage对象。

实现方式如下

public static HtmlPage getPage(WebClient client, String html, String url, WebWindow window) {
try {
URL u = new URL(StringUtils.isBlank(url) ? "http://www.idea.com" : url);
StringWebResponse response = new StringWebResponse(html, u);
HtmlPage page = HTMLParser.parseHtml(response, window != null ? window : client.getCurrentWindow());
return page;
} catch (Exception e) {
throw new RuntimeException("字符串转换为htmlPage出错", e);
}
}
public static HtmlPage getPage(String html) {
return getPage(new WebClient(), html, null,null);
}

接下来调用getPage方法 并传入Html字符串就可以返回一个HtmlPage对象了。

本文参考 https://stackoverflow.com/questions/6136435/how-to-create-htmlunit-htmlpage-object-from-string