【发布时间】:2012-05-13 15:25:03
【问题描述】:
我一直在使用 HTMLUnit 。它非常适合我的要求。但它似乎非常缓慢。 例如:我使用 HTMLUnit 自动化了以下场景
Goto Google page
Enter some text
Click on the search button
Get the title of the results page
Click on the first result.
代码:
long t1=System.currentTimeMillis();
Logger logger=Logger.getLogger("");
logger.setLevel(Level.OFF);
WebClient webClient=createWebClient();
WebRequest webReq=new WebRequest(new URL("http://google.lk"));
HtmlPage googleMainPage=webClient.getPage(webReq);
HtmlTextInput searchTextField=(HtmlTextInput) googleMainPage.getByXPath("//input[@name='q']").get(0);
HtmlButton searchButton=(HtmlButton) googleMainPage.getByXPath("//button[@name='btnK']").get(0);
searchTextField.type("Sri Lanka");
System.out.println("Text typed!");
HtmlPage googleResultsPage= searchButton.click();
System.out.println("Search button clicked!");
System.out.println("Title : " + googleResultsPage.getTitleText());
HtmlAnchor firstResultLink=(HtmlAnchor) googleResultsPage.getByXPath("//a[@class='l']").get(0);
HtmlPage firstResultPage=firstResultLink.click();
System.out.println("First result clicked!");
System.out.println("Title : " + firstResultPage.getTitleText());
//System.out.println(firstResultPage.asText());
long t2=System.currentTimeMillis();
long diff=t2-t1;
System.out.println("Time elapsed : " + milliSecondsToHrsMinutesAndSeconds(diff));
webClient.closeAllWindows();
它 100% 运行良好。但是需要3分41秒
我猜执行缓慢的原因是验证页面上的每个元素。
我的问题是如何减少 HTMLUnit 的执行时间?有什么方法可以禁用网页验证。
提前致谢!
【问题讨论】:
-
请找到更新后的代码。
-
禁用 JS 支持会让它变得更快
-
尝试只访问一个链接,看看是否需要时间
-
不能禁用 JavaScript!
-
在我的电脑上需要 25 秒。你是不是内存不足?