获取页面源代码实现的HtmlUnit显示异常

时间:2013-04-06 13:23:24

标签: java html5 exception selenium-webdriver htmlunit

我尝试从URL获取动态页面。我在Java工作。我使用Selenium完成了这项工作,但需要花费大量时间。因为调用Selenium的驱动程序需要时间。这就是我转移到HtmlUnit的原因,因为它是GUILess Browser。但我的HtmlUnit实现显示了一些异常。

问题: -

  1. 如何更正我的HtmlUnit实现。
  2. Selenium生成的页面是否与HtmlUnit生成的页面类似? [两者都是动态的还是没有? ]
  3. 我的硒代码是: -

     public static void main(String[] args) throws IOException {
    
     // Selenium
     WebDriver driver = new FirefoxDriver();
     driver.get("ANY URL HERE");  
     String html_content = driver.getPageSource();
     driver.close();
    
     // Jsoup makes DOM here by parsing HTML content
     Document doc = Jsoup.parse(html_content);
    
     // OPERATIONS USING DOM TREE
    

    }

    HtmlUnit代码: -

    package XXX.YYY.ZZZ.Template_Matching;
    
    import com.gargoylesoftware.htmlunit.WebClient;
    import com.gargoylesoftware.htmlunit.html.HtmlPage;
    import org.junit.Assert;
    import org.junit.Test;
    
    public class HtmlUnit {
    
        public static void main(String[] args) throws Exception {
            //HtmlUnit htmlUnit = new  HtmlUnit();
            //htmlUnit.homePage();
            WebClient webClient = new WebClient();
            HtmlPage currentPage = webClient.getPage("http://www.jabong.com/women/clothing/womens-tops/?source=women-leftnav");
            String textSource = currentPage.asText();
            System.out.println(textSource);
        }
    }
    

    显示异常: -

    enter image description here

1 个答案:

答案 0 :(得分:1)

  

1:如何更正我的HtmlUnit implaementation。

查看堆栈跟踪,似乎是说javascript引擎执行了一些试图访问Javascript属性的javascript" undefined"值。如果它是正确的,那将是您正在测试的javascript中的错误,而不是HtmlUnit代码中的错误。

  

2:Selenium生成的页面是否与HtmlUnit生成的页面类似?

这没有意义。 Selenium或HtmlUnit"都没有产生"页面。该页面由您正在测试的服务代码生成。

如果你问HtmlUnit是否能够处理嵌入了Javascript的代码......堆栈跟踪中有明显的证据表明尝试执行Javascript。