HtmlUnit 2.17与Java 7存在问题
我的这段代码适用于Java6,但不适用于Java7。 我同时使用了HtmlUnit2.12和HtmlUnit2.17,没有任何效果。请告诉我这里缺少什么 从Java7中我得到了这个异常:java.net.SocketTimeoutException:Read timeoutHtmlUnit 2.17与Java 7存在问题,java,web-crawler,htmlunit,htmlunit-driver,Java,Web Crawler,Htmlunit,Htmlunit Driver,我的这段代码适用于Java6,但不适用于Java7。 我同时使用了HtmlUnit2.12和HtmlUnit2.17,没有任何效果。请告诉我这里缺少什么 从Java7中我得到了这个异常:java.net.SocketTimeoutException:Read timeout import java.io.IOException; import java.net.MalformedURLException; import com.gargoylesoftware.htmlunit.Browser
import java.io.IOException;
import java.net.MalformedURLException;
import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
public class Test {
public static void main(String[] args) throws FailingHttpStatusCodeException, MalformedURLException, IOException {
String url = "http : / / kellyserviceshk . force . com / careers";
String content = fetchPage(url, "firefox", 30000, true);
System.out.println(content);
}
private static String fetchPage(String url, String browser, long delayinmillis, boolean javaScriptEnable) {
WebClient webClient = new WebClient(BrowserVersion.FIREFOX_17);
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
webClient.getOptions().setUseInsecureSSL(true);
webClient.getCookieManager().setCookiesEnabled(true);
webClient.getOptions().setJavaScriptEnabled(javaScriptEnable);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
String content="";
try {
HtmlPage page = webClient.getPage(url);
webClient.waitForBackgroundJavaScript(delayinmillis);
content = page.asXml();
} catch (Exception e) {
e.printStackTrace();
} finally {
if(webClient!=null){
webClient.closeAllWindows();
webClient=null;
}
}
return content;
}
}
在更改HtmlUnit2.17时,我将BrowserVersion用作FIREFOX_38,而不是FIREFOX_17。
我应该做什么改变 您可以尝试定义超时:
webClient.getOptions().setTimeout(0); // zero for an infinite wait. (time in milliseconds)
默认超时为90秒(HtmlUnit-2.11之前为0)。只是观察:根据您的情况,更改此选项可能会有危险。我遇到了与OP相同的问题。在我
.setTimeout(0)
之后,我的一个测试的运行时间从几分钟变为几小时!