HTML单元的NULL指针异常

时间:2012-10-11 05:09:42

标签: java nullpointerexception htmlunit

我正在使用htmlunit-2 / .9版本,当我尝试获取当前的HTML页面内容并将其保存到临时文件以供将来参考时,我在调用{{1}时收到空指针异常}。

非常感谢任何指针或帮助。

这是stacktrace:

currentPage.asXml()

以下是导致NULL指针的代码段。我正在为大约100个测试用例运行此测试,在100个测试用例中,它会随机失败20-30个案例

java.lang.NullPointerException
    at **com.gargoylesoftware.htmlunit.SgmlPage.asXml(SgmlPage.java:206)**
    at com.yahoo.vis.ddbuilder.validator.DDBuilderValidator.validateTemplate_1(DDBuilderValidator.java:308)
    at com.yahoo.vis.ddbuilder.validator.DDBuilderValidator.validate(DDBuilderValidator.java:72)
    at sun.reflect.GeneratedMethodAccessor78.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.yahoo.robot.components.interfaces.Executable.run(Executable.java:73)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)

1 个答案:

答案 0 :(得分:0)

HtmlPage扩展SgmlPage课程,我已经查看SgmlPage的{​​{1}}源代码。

它在内部调用另一个返回getDocumentElement()

的方法DomElement

asXml(),这些是方法:

 @Override
   public String asXml() {
       return getDocumentElement().asXml(); // This is Line 206, From your error trace
   }

public DomElement  getDocumentElement() {
        DomNode childNode = getFirstChild();

        while (childNode != null && !(childNode instanceof DomElement)) {

           childNode = childNode.getNextSibling();

       }
       return (DomElement) childNode;
}

此处childNode可能为NULL。如果childNode返回NULL,则调用getDocumentElement().asXml();将抛出NullPointerException

PS。:您没有提供任何有关如何调用方法的详细信息。所以,我无法找到根本原因但是,我希望这将有助于你理解至少为什么你会收到错误。