Java HTMLUnit:超慢执行?
我一直在用它。它很适合我的要求。但它似乎非常缓慢。 例如:我已经使用HTMLUnit自动化了以下场景Java HTMLUnit:超慢执行?,java,selenium,htmlunit,Java,Selenium,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(""); l
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的执行时间?有没有办法禁用网页上的验证
提前谢谢 - 确保使用最新的htmlunit版本(2.9)。我从以前的版本中得到了性能提升
WebClient client = new WebClient(BrowserVersion.FIREFOX_3_6);
client.setTimeout(60000);
client.setRedirectEnabled(true);
client.setJavaScriptEnabled(true);
client.setThrowExceptionOnFailingStatusCode(false);
client.setThrowExceptionOnScriptError(false);
client.setCssEnabled(false);
client.setUseInsecureSSL(true);
我还建议设置javascript的时间限制:
client.setJavaScriptTimeout(30000); //e.g. 30s
对于当前的htmlUnit 2.13,设置选项与maxmax提供的略有不同:
final WebClient webClient = new WebClient(BrowserVersion.CHROME);
webClient.getOptions().setCssEnabled(false);//if you don't need css
webClient.getOptions().setJavaScriptEnabled(false);//if you don't need js
HtmlPage page = webClient.getPage("http://XXX.xxx.xx");
...
在我自己的测试中,这比默认选项快8倍。(请注意,这可能与网页有关)请查找更新的代码。禁用JS支持将使您能够快速访问一个链接,并查看是否需要时间禁用JavaScript不是一个选项!在我的电脑上用25秒。内存不足吗?禁用JS总是会导致更快的执行。但是,上面提到的禁用JavaScript的操作不是一个选项代码>:)OP代表什么?你是说JS不应该被禁用吗?我的意思是,提问者在评论中补充说禁用JS不是一个选项哦,我错过了。我本打算改进maxmax的答案,但对原来的问题关注得太少了。谢谢你指出这一点。