私は1日を費やして、以下を達成するために使用できるライブラリーを研究しました。
これが私が成功せずに試したことです:
HtmlUnitが私のソリューションに最も適しているように見えるので、私は本当にHtmlUnitを機能させたいと思っています。私のニーズに適した方法、または少なくとも私が見逃した別のライブラリはありますか?
現在Android Studio 0.1.7を使用しており、必要に応じてEllipseに移動できます。
前もって感謝します!
2週間後、私は敗北を認め、現時点でうまく機能する回避策を使用しています。
問題:
HTMLUnitをAndroid(または少なくとも私のレベルの専門知識)に移植するのは難しすぎます。これは価値のあるプロジェクトだと確信しています(経験豊富なためにそれほど時間をかけません= Javaプログラマー)。HTMLUnitの担当者にメールを送ったところ、彼らはポートを調べていない、またはどのような取り組みが必要かについてコメントしましたが、そのようなプロジェクトを始めたい人はメッセージを送信するよう提案しましたより多くの開発者を参加させるために彼らのメーリングリストに( http://htmlunit.sourceforge.net/mail-lists.html )。
回避策:
Androidの組み込みWebViewを使用し、WebviewクラスのonPageFinishedメソッドをオーバーライドして、ページが完全に読み込まれた後にすべてのHTMLを取得するJavascriptを挿入しました。 Webviewは、さらにJavascriptアクションの呼び出し、ボタンのクリック、フォームの入力などにも使用できます。
コード:
webView.getSettings().setJavaScriptEnabled(true);
MyJavaScriptInterface jInterface = new MyJavaScriptInterface(context);
webView.addJavascriptInterface(jInterface, "HtmlViewer");
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
//Load HTML
webView.loadUrl("javascript:window.HtmlViewer.showHTML
('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
}
webView.loadUrl(StartURL);
ParseHtml(jInterface.html);
public class MyJavaScriptInterface {
private Context ctx;
public String html;
MyJavaScriptInterface(Context ctx) {
this.ctx = ctx;
}
@JavascriptInterface
public void showHTML(String _html) {
html = _html;
}
}
上記の実装(JavaScriptの挿入)を採用しましたが、それでうまくいきます。私がしているのは、Webビューの可視性を他のUI要素の下に隠すように設定することだけです。セレンについても同じことを考えていました。私はChrome in Python=でSeleniumを使用しましたが、それは素晴らしいですが、ブラウザウィンドウを表示しないのは簡単ではありません。しかし、 Androidでコンポーネントを表示しないようにすることは可能です。