Htmlunit в приложении для Android

Кто-нибудь получил HTMLUnit (или HtmlUnitDriver) для работы с приложениями для Android?

Вот в чем проблема: я получаю следующее сообщение об ошибке:

11-26 16:27:26.617: E/AndroidRuntime(1265): java.lang.NoClassDefFoundError: org/w3c/dom/css/CSSRule

Вот что я сделал: я попытался добавить ссылки на jar-файлы, перечисленные в следующей ссылке (как в зависимостях проекта, так и в транзитивных зависимостях проекта — только для компиляции, исключая тестовые jar-файлы):

http://htmlunit.sourceforge.net/dependencies.html

Однако Eclipse продолжал падать, затем я нашел несколько вопросов о том, что некоторые jar-файлы уже содержатся в Android SDK:

xalan, xercesImpl and xml-apis

HtmlUnit на Android

HttpClient

HtmlUnit для программирования Android

Поэтому я удалил ссылки на эти банки, оставив только следующее:

commons-codec-1.4.jar
commons-collections-3.2.1.jar
commons-io-2.0.1.jar
commons-lang-2.6.jar
commons-logging-1.1.1.jar
cssparser-0.9.5.jar
htmlunit-2.9.jar
htmlunit-core-js-2.9.jar
httpmime-4.1.2.jar
nekohtml-1.9.15.jar
sac-1.3.jar
httpcore-4.1.3.jar

Именно в этот момент приложение смогло запуститься, но когда была выполнена следующая строка кода, я начал получать сообщение об ошибке:

final WebClient webClient = new WebClient();

11-26 16:27:26.617: E/AndroidRuntime(1265): java.lang.NoClassDefFoundError: org/w3c/dom/css/CSSRule

Я провел поиск в Интернете и обнаружил, что xml-apis-1.3.04.jar содержит org/w3c/dom/css/CSSRule, поэтому я вернул эту ссылку в проект. но приложение вообще не собиралось, выдавая то же сообщение об ошибке, что и в первой ссылке выше:

[2011-11-26 16:39:52 - Myproj] Conversion to Dalvik format failed with error 1

Может ли кто-нибудь пролить свет на это?


person Ulises    schedule 26.11.2011    source источник
comment
Согласно их сайту: это особый способ имитации браузера для целей тестирования, который предназначен для использования в другой среде тестирования, такой как JUnit или TestNG. Мне интересно, зачем вам нужно имитировать виртуальный браузер, когда в Android есть браузер Webkit и тестирование JUnit? developer.android.com/tools/testing/testing_android.html   -  person NoBugs    schedule 10.02.2013


Ответы (2)


xml-apis-1.3.04.jar содержит основные классы. Вы должны изменить банку и удалить эти классы.

Обратите внимание, что по крайней мере в текущей версии ADT вы получаете сообщение с объяснением проблемы:

Ill-advised or mistaken usage of a core class (java.* or javax.*)
when not building a core library.
person Juan Sánchez    schedule 21.09.2013

Так же, как ULsies заявил в комментариях, Htmlunit делает это ==> HtmlUnit - это «браузер без графического интерфейса для программ Java». Он моделирует HTML-документы и предоставляет API, который позволяет вам вызывать страницы, заполнять формы, переходить по ссылкам и т. д. так же, как вы делаете это в своем «обычном» браузере.

который точно аналогичен виджету веб-просмотра, предоставленному внутри Android SDK, вам не нужна никакая другая дополнительная банка, чтобы открыть веб-страницу внутри вашей деятельности.

согласно документации Google Android. WebView — это представление, которое отображает веб-страницы. Он использует механизм рендеринга WebKit для отображения веб-страниц и включает методы для навигации вперед и назад по истории, увеличения и уменьшения масштаба, выполнения текстового поиска и многого другого.

добавьте это в свой xml-файл макета активности.

    <WebView  xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
  />

и это в ваш файл класса активности..

WebView myWebView = (WebView) findViewById(R.id.webview);
 myWebView.loadUrl("http://www.your url .com");

подробнее об этом здесь: http://developer.android.com/guide/webapps/webview.html

person user1910290    schedule 10.02.2013
comment
Может быть, он хочет использовать его для парсинга, а не только для просмотра веб-сайта. - person user1810737; 09.08.2013
comment
webview дает вам возможность получить исходный код веб-сайта, который можно сохранить и проанализировать. Для этого существует множество руководств, просто погуглите! - person user1910290; 11.08.2013
comment
Мне это тоже нужно. Мне это нужно в службе Android для анализа html-страницы после запуска кода javascript. Итак, вы можете помочь мне, как заставить htmlunit работать на Android? - person Totalys; 15.02.2014