Search code examples
javajavascripthtmlunit

How to execute random Javascript code on a web page?


I'm using htmlunit to test some pages and I'd like to know how can I execute some javascript code in the context of the current page. I'm aware that the docs say I'd better emulate the behavior of a user on a page, but it isn't working this way :( (I have a div which has an onclick property, I call its click method but nothing happens). So I've made some googling and tried:

JavaScriptEngine jse = webClient.getJavaScriptEngine();
jse.execute(page, what here?);

Seems like I have to instantiate the script first, but I've found no info on how to do it (right). Could someone share a code snippet showing how to make webclient instance execute the needed code?


Solution

  • You need to call executeJavaScript() on the page, not on webClient.

    Example:

    WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3);
    webClient.setJavaScriptEnabled(true);
    HtmlPage page = webClient.getPage("http://www.google.com/ncr");
    ScriptResult scriptResult = page.executeJavaScript("document.title");
    System.out.println(scriptResult.getJavaScriptResult());
    

    prints "Google". (I'm sure you'll have some more exciting code to put in there.)