He estado usando HTMLUnit. Se adapta bien a mis necesidades. Pero parece ser extremadamente lento. por ejemplo: Me han automatizado el siguiente escenario usando HtmlUnitHTMLUnit: ejecución súper lenta?
Goto Google page
Enter some text
Click on the search button
Get the title of the results page
Click on the first result.
Código:
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();
Funciona bien el 100%. Pero lleva 3 minutos, 41 segundos
Supongo que el motivo de la ejecución lenta es la validación de todos y cada uno de los elementos de la página.
Mi pregunta es cómo reducir el tiempo de ejecución de HTMLUnit? ¿Hay alguna forma de desactivar las validaciones en las páginas web?
¡Gracias de antemano!
¿Puede pegar el código? – UVM
Encuentre el código actualizado. –
La desactivación de la compatibilidad con JS hará que sea más rápido –