我尝试从URL获取动态页面。我在Java工作。我使用Selenium完成了这项工作,但需要花费大量时间。因为调用Selenium的驱动程序需要时间。这就是我转移到HtmlUnit的原因,因为它是GUILess Browser。但我的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);
}
}
显示异常: -
答案 0 :(得分:1)
1:如何更正我的HtmlUnit implaementation。
查看堆栈跟踪,似乎是说javascript引擎执行了一些试图访问Javascript属性的javascript" undefined"值。如果它是正确的,那将是您正在测试的javascript中的错误,而不是HtmlUnit代码中的错误。
2:Selenium生成的页面是否与HtmlUnit生成的页面类似?
这没有意义。 Selenium或HtmlUnit"都没有产生"页面。该页面由您正在测试的服务代码生成。
如果你问HtmlUnit是否能够处理嵌入了Javascript的代码......堆栈跟踪中有明显的证据表明尝试执行Javascript。