我一直在使用
HTMLUnit.适合我的要求但似乎是非常慢的.
例如:我已经使用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的执行时间?是否有任何方法来禁用网页上的验证.
提前致谢!
解决方法
对于当前的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倍(注意这可能是依赖于网页)