2016-01-24 73 views
1

這是我的代碼。我嘗試使用Java中的WebClient加載twitter註冊頁面。WebClient無法加載twitter頁面

public LoadTwitter() { 
    client = new WebClient(BrowserVersion.CHROME); 
    client.getOptions().setJavaScriptEnabled(true); 
    client.getOptions().setThrowExceptionOnScriptError(false); 
    //client.waitForBackgroundJavaScript(2000); 
} 

public void loadPage() throws IOException { 
    HtmlPage page = client.getPage("http://twitter.com/signup"); 
} 

但我有很多javascript錯誤。如果我關閉JavaScript。我拿到了手機版網頁。如何解決這個問題呢?

янв 24, 2016 6:50:27 PM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify 
WARNING: Obsolete content type encountered: 'text/javascript'. 
янв 24, 2016 6:50:27 PM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify 
WARNING: Obsolete content type encountered: 'text/javascript'. 
янв 24, 2016 6:50:28 PM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify 
WARNING: Obsolete content type encountered: 'text/javascript'. 
янв 24, 2016 6:50:29 PM com.gargoylesoftware.htmlunit.javascript.host.css.CSSStyleSheet isValidSelector 
WARNING: Unhandled CSS condition type '7'. Accepting it silently. 
янв 24, 2016 6:50:29 PM com.gargoylesoftware.htmlunit.javascript.StrictErrorReporter runtimeError 
SEVERE: runtimeError: message=[An invalid or illegal selector was specified (selector: '*,:x' error: Invalid selector: *:x).] sourceName=[https://abs.twimg.com/c/swift/en/init.c624198d27d7d00677cf16d484b32903b375bbc6.js] line=[108] lineSource=[null] lineOffset=[0] 
янв 24, 2016 6:50:32 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error 
======= EXCEPTION START ======== 
EcmaError: lineNumber=[8] column=[0] lineSource=[null] name=[TypeError] sourceName=[https://abs.twimg.com/c/swift/en/bundle/signup.5fb6bc11a86475b13235f34876f4d57d28669252.js] message=[TypeError: Cannot call method "call" of undefined (https://abs.twimg.com/c/swift/en/bundle/signup.5fb6bc11a86475b13235f34876f4d57d28669252.js#8)] 
com.gargoylesoftware.htmlunit.ScriptException: TypeError: Cannot call method "call" of undefined (https://abs.twimg.com/c/swift/en/bundle/signup.5fb6bc11a86475b13235f34876f4d57d28669252.js#8) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:865) 
== CALLING JAVASCRIPT == 
    function (b) { 
     b = a.event || b; 
     if (b.type == "load" || w(["loaded", "complete"], this.readyState) > -1) { 
      this.onreadystatechange = null; 
      c.loaded(); 
     } 
    } 
======= EXCEPTION END ======== 

回答

0

試試這個,應該通過刪除的HtmlUnit日誌:

LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog"); 

java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF); 
java.util.logging.Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.OFF); 

client = new WebClient(BrowserVersion.CHROME); 
client.getOptions().setJavaScriptEnabled(true); 
client.getOptions().setThrowExceptionOnScriptError(false); 
client.getOptions().setThrowExceptionOnFailingStatusCode(false); 
+0

它如何幫助我嗎? –

+0

此代碼將關閉由htmlunit引起的所有javascript警告。這些警告是由於htmlunit庫,而不是你的代碼,你應該爲你的頁面獲得正確的內容。 – haihui