如何从String创建HtmlUnit HTMLPage对象?

时间:2011-05-26 09:30:42

标签: java htmlunit

question was asked once already,但我猜测API已经改变了,答案已经无效了。

URL url = new URL("http://www.example.com");
StringWebResponse response = new StringWebResponse("<html><head><title>Test</title></head><body></body></html>", url);
HtmlPage page = HTMLParser.parseHtml(response, new TopLevelWindow("top", new WebClient()));
System.out.println(page.getTitleText());

无法完成,因为TopLevelWindow受到保护,因为扩展/实现窗口这样的东西很荒谬:)

有人知道怎么做吗?我觉得奇怪的是它不能轻易完成。

2 个答案:

答案 0 :(得分:25)

此代码适用于GroovyConsole

@Grapes(
    @Grab(group='net.sourceforge.htmlunit', module='htmlunit', version='2.8')
)

import com.gargoylesoftware.htmlunit.*
import com.gargoylesoftware.htmlunit.html.*

URL url = new URL("http://www.example.com");
StringWebResponse response = new StringWebResponse("<html><head><title>Test</title></head><body></body></html>", url);
WebClient client = new WebClient()
HtmlPage page = HTMLParser.parseHtml(response, client.getCurrentWindow());
System.out.println(page.getTitleText());

答案 1 :(得分:0)

使用HTMLUnit 2.40,Grooveek的代码将无法编译,您会收到“无法从HTMLParser类型对非静态方法parseHtml(WebResponse,WebWindow)进行静态引用”。但是现在有一个实现HTMLParser接口的HtmlUnitNekoHtmlParser类,因此以下代码可以正常工作:

StringWebResponse response = new StringWebResponse(
    "<html><head><title>Test</title></head><body></body></html>", 
    new URL("http://www.example.com"));
HtmlPage page = new HtmlUnitNekoHtmlParser().parseHtml(
    response, new WebClient().getCurrentWindow());