2012-04-13 46 views
2

我想這個代碼:2.9的HtmlUnit罐子執行JavaScript

import com.gargoylesoftware.htmlunit.BrowserVersion; 
import com.gargoylesoftware.htmlunit.JavaScriptPage; 
import com.gargoylesoftware.htmlunit.ScriptResult; 
import com.gargoylesoftware.htmlunit.WebClient; 
import com.gargoylesoftware.htmlunit.WebRequest; 
import com.gargoylesoftware.htmlunit.WebResponse; 
import com.gargoylesoftware.htmlunit.WebWindow; 
import com.gargoylesoftware.htmlunit.html.HtmlPage; 
import com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine; 
import com.gargoylesoftware.htmlunit.javascript.host.html.HTMLScriptElement; 
import java.net.URL; 
import java.util.List; 

public class Example { 

    public static void main(String[] args) throws Exception { 

     WebClient webClient = new WebClient(BrowserVersion.INTERNET_EXPLORER_6); 
     URL url=new URL("http://www.google.com"); 
     WebRequest request= new WebRequest(url); 
     WebResponse response=new WebResponse(null, request, 6000); 
     webClient.setJavaScriptEnabled(true); 
     webClient.setThrowExceptionOnScriptError(false); 
     webClient.setCssEnabled(false); 

     webClient.setRedirectEnabled(true); 

     JavaScriptEngine engine = new JavaScriptEngine(webClient); 
     webClient.setJavaScriptEngine(engine); 
     HtmlPage firstPage = null; 
     ScriptResult result = null; 
     JavaScriptPage jsp=new JavaScriptPage(response, null); 
     try { 
      firstPage = webClient.getPage(request); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     String JavaScriptCode = "1+1"; 

     try { 
      result = firstPage.executeJavaScript(JavaScriptCode); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     Object javaScriptResult = result.getJavaScriptResult(); 
     System.out.println(javaScriptResult); 
    } 
} 

它的工作原理擅長用簡單的JavaScript代碼,如"1+1"。我想要執行URL的頁面源中定義的特定功能。 URL是我在此代碼中定義的字段。

+0

請幫我打電話給那就是在URL的pagesource定義的函數。 謝謝。 – user1319054 2012-04-13 07:44:56

回答

4

這裏是一個工作的例子中,我試圖使它儘可能簡單:

import com.gargoylesoftware.htmlunit.BrowserVersion; 
import com.gargoylesoftware.htmlunit.WebClient; 
import com.gargoylesoftware.htmlunit.html.HtmlPage; 

public class Test { 
    public static void main(String[] args) throws Exception { 

     WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3_6); 

     HtmlPage page = webClient.getPage("http://www.iana.org/"); 
     String javaScriptCode = "inArray([1,2],3)"; 

     Object result = page.executeJavaScript(javaScriptCode).getJavaScriptResult(); 
     System.out.println(result); 
    } 
} 
+0

,謝謝.. 以同樣的方式我想調用在任何特定url的pagesource中定義的javascript函數。 – user1319054 2012-04-13 10:04:02

+0

,謝謝.... inArray也是在「http://www.iana.org/」中定義的一種方法。 – user1319054 2012-04-13 10:08:44