2012-04-13 42 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