htmlUnitでJavascriptを実行する

私はhtmlUnitを使用してjavascriptを実行しようとしています。 javascriptを実行した後、javascriptの実行によってページに変更があったかどうかを確認したい。つまり、javascriptの実行前後でhtmlページを比較したいのですが...

どのように私はそれを行うことができます任意のアイデア...

ここでは、私が実際にやろうとしていることを説明するサンプルコードです...

public static void main(String[] args) {
    final WebClient webClient = new WebClient();

    HtmlPage page;
    try {
        page = webClient
                .getPage("http://www.somepage.com");
        System.out.println(page.asXml());
        System.out.println(page.getByXPath("//script"));

        BufferedInputStream buffer = null;
       //System.out.print("getWebSite " + urlValue + "\n");

        URL url = new URL(
                "http://www.somepage.com/someJS.js");
        HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
        buffer = new BufferedInputStream(urlc.getInputStream());

        StringBuilder builder = new StringBuilder();
        int byteRead;
        while ((byteRead = buffer.read()) != -1)
            builder.append((char) byteRead);

        buffer.close();

        ScriptResult result = page.executeJavaScript(builder.toString());
        Object jsResult = result.getJavaScriptResult();

        HtmlPage afterExecution = (HtmlPage) result.getNewPage();

        System.out.println(afterExecution.asXml());

    } catch (FailingHttpStatusCodeException e) {
       //TODO Auto-generated catch block
        e.printStackTrace();
    } catch (MalformedURLException e) {
       //TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
       //TODO Auto-generated catch block
        e.printStackTrace();
    }

}
3
htmlUnitは問題または比較ですか?
追加された 著者 Rob Fox,

1 答え

Javascriptのソースを「実行する」とは何もしません。私はあなたが result.getNewPage()から少ししか戻ってこないことを期待しています。サンプルを実際のサイトにヒットさせるように変更し、どのような結果が表示されるかを説明してから、あなたの例を実行してみてください。

それは、HtmlUnitをJavaで制御するブラウザと考えることです。ページ内でJavascriptを「実行」しないと、HtmlUnitはそれを実行します。あなたは人間のユーザが物事をクリックしているようなふりをしますが、あなたはJavaコードを使って "クリック"します。

あなたの例では、 page のDOMをナビゲートして、Javascriptのトリガに使うものを探し出します。おそらく、ボタンや画像をクリックします。 click()を呼び出した結果、Javascriptが何をしても新しいページが表示されます。

1
追加された
他のブラウザと同様に、HtmlUnitは見つかったすべての<script>コンテンツを実行し、ユーザインタラクションがJavascriptをトリガするのを待ちます。私はHtmlUnit自体が、コードのいくつかの特定のビットがトリガされているかどうかをプログラムでテストできるようにしているのかどうかはわかりません(私はデバッガを介して正確にそれを思い出して、かなり醜いと思ったようです)。しかし、JSライブラリHtmlUnitが使用します。おそらくそうではありません。おそらくFirebug JSデバッガがあなたを助けるでしょうか?
追加された 著者 Rodney Gitzel,
こんにちはロドニー、返事をありがとう。はい、私はhtmlUnitがヘッドレスJavaブラウザであることを理解しています。私はjavascriptを実行するためにclick()イベントやその他のイベントを呼び出さなければなりません。私が基本的にしたいのは、ウェブサイトには一般的に<script>タグを使って多くのjavascriptが含まれています。私はこのjavascriptsが実際にページによって使用されているかどうかを知りたい。だから私はそれが含まれているすべてのJavaScriptを使用しているかどうかをチェックしたいページを与えられた。 htmlUnitでこれを行うことはできますか?適切なツールを使用していますか?より良い方法があれば教えてください。ありがとう、Irfan
追加された 著者 irbash,
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript