0

我尝试从 URL 获取动态页面。我在 Java 中工作。我已经使用 Selenium 完成了这项工作,但这需要很多时间。因为调用 Selenium 的驱动程序需要时间。这就是我转向 HtmlUnit 的原因,因为它是无 GUI 浏览器。但是我的 HtmlUnit 实现显示了一些异常。

问题:-

  1. 如何更正我的 HtmlUnit 实现。
  2. Selenium 生成的页面是否与 HtmlUnit 生成的页面相似?[ 两者都是动态的吗?]

我的硒代码是:-

 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);
    }
}

它显示异常:-

在此处输入图像描述

4

1 回答 1

1

1:如何纠正我的 HtmlUnit 实施。

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

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

那没有意义。Selenium 或 HtmlUnit 都不会“生成”页面。该页面由您正在测试的服务代码生成。

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

于 2013-04-06T13:30:43.143 回答