2011-11-26 17 views
17

¿Alguien ha recibido HTMLUnit (o HtmlUnitDriver) para trabajar en las aplicaciones de Android?Htmlunit en la aplicación de Android

Este es el problema: Estoy recibiendo el siguiente mensaje de error:

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

Esto es lo que hice: He intentado añadir añadiendo referencias a los frascos que figuran en el siguiente enlace (en tanto dependencias del proyecto y del proyecto transitivos dependencias - solamente la compilación, con exclusión de los frascos de prueba):

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

Cómo Alguna vez Eclipse mantuvo estrellarse, entonces me encontré con un par de preguntas que dicen algunos frascos están ya contenidos en el SDK de Android:

xalan, xercesImpl and xml-apis 

HtmlUnit on Android

HttpClient 

Android Programming HtmlUnit

Así que eliminan las referencias a estos frascos manteniendo solo lo siguiente:

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 

Fue en este punto cuando la aplicación era capaz de correr pero cuando se ejecuta la siguiente línea de código que comenzó a obtener el error:

final WebClient webClient = new WebClient(); 

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

hice una búsqueda en Internet y encontré que XML-API-1.3 .04.jar contiene org/W3C/DOM/CSS/CSSRule por lo que poner esa referencia de nuevo al proyecto, pero la aplicación no construirían en absoluto diciendo el mismo mensaje de error descrito en el primer enlace de arriba:

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

¿Podría alguien por favor arrojar algo de luz sobre esto?

+1

acuerdo a su sitio: "Es específicamente una forma de simular un navegador para propósitos de prueba y está destinado a ser utilizado dentro de otro marco de prueba como JUnit o TestNG ". Me pregunto por qué necesitas simular un navegador virtual, cuando Android tiene un navegador Webkit y pruebas JUnit? https://developer.android.com/tools/testing/testing_android.html – NoBugs

Respuesta

0

Al igual que ULsies declaró en los comentarios Htmlunit hace esto ==> HtmlUnit es un "navegador GUI-Less para programas Java". Modela documentos HTML y proporciona una API que le permite invocar páginas, completar formularios, hacer clic en enlaces, etc., tal como lo hace en su navegador "normal".

que es exactamente similar al widget de vista web proporcionada dentro del SDK de Android que no necesita ningún otro frasco extra para abrir una página web dentro de su actividad

según Google documentación androide Un WebView es una vista que muestra las páginas web . Utiliza el motor de renderizado WebKit para mostrar páginas web e incluye métodos para avanzar y retroceder a través de un historial, acercar y alejar, realizar búsquedas de texto y más.

agregar esto a su archivo xml de diseño de actividad.

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

y esto a su archivo de clase de actividad ..

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

más sobre esto aquí: http://developer.android.com/guide/webapps/webview.html

+1

Tal vez quiera usarlo para analizar en lugar de solo ver el sitio web – user1810737

+0

webview le da la posibilidad de buscar el código fuente del sitio web que puede almacenarse y analizado Muchos tutoriales están ahí para hacer esto, ¡solo googlealo! – user1910290

+0

También necesito esto. Lo necesito en un servicio de Android para analizar una página html después de ejecutar un código JavaScript. Entonces, ¿puedes ayudarme a hacer que la htmlunit funcione en Android? – Totalys

2

XML-API-1.3.04.jar contiene las clases básicas. Tienes que modificar el jar y borrar esas clases.

Tenga en cuenta que, al menos en la actual versión de ADT, que está recibiendo un mensaje que explica el problema:

Ill-advised or mistaken usage of a core class (java.* or javax.*) 
when not building a core library.