2012-04-13 2 views
2

Я пытаюсь этот код:HtmlUnit 2.9 баночки выполнение 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. Спасибо. – user1319054

ответ

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

, спасибо .. Таким же образом я хочу вызвать функцию javascript, которая определена в источнике данных любого конкретного URL-адреса. – user1319054

+0

, спасибо .... inArray также является методом, который определен в «http://www.iana.org/». – user1319054

Смежные вопросы