【问题标题】:Htmlunit on Android applicationAndroid 应用程序上的 Htmlunit
【发布时间】:2011-11-26 22:54:19
【问题描述】:

有人让 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 一直在崩溃,然后我发现一些问题说一些 jars 已经包含在 Android SDK 中:

xalan, xercesImpl and xml-apis

HtmlUnit on Android

HttpClient

Android Programming HtmlUnit

所以我删除了对这些罐子的引用,只保留以下内容:

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

有人能解释一下吗?

【问题讨论】:

  • 根据他们的网站:“这是一种专门模拟浏览器以进行测试的方法,旨在用于其他测试框架,例如 JUnit 或 TestNG。”我想知道当Android有Webkit浏览器和JUnit测试时,为什么需要模拟虚拟浏览器? developer.android.com/tools/testing/testing_android.html

标签: java android htmlunit


【解决方案1】:

xml-apis-1.3.04.jar 包含核心类。您必须修改 jar 并删除这些类。

请注意,至少在当前的 ADT 版本中,您会收到一条解释问题的消息:

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

【讨论】:

    【解决方案2】:

    正如 cmets Htmlunit 中所述的 ULsies 所做的那样 ==> HtmlUnit 是“用于 Java 程序的无 GUI 浏览器”。它对 HTML 文档进行建模并提供一个 API,允许您调用页面、填写表单、单击链接等……就像您在“普通”浏览器中所做的一样。

    这与 android sdk 中提供的 webview 小部件完全相同,您不需要任何其他额外的 jar 即可在活动中打开网页

    根据谷歌安卓文档 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

    【讨论】:

    • 也许他想用它来解析而不是仅仅查看网站
    • webview 让您能够获取可以存储和解析的网站源代码。有很多教程可以做到这一点只需谷歌它!
    • 我也需要这个。在运行一些 javascript 代码后,我需要它在 Android 服务中解析 html 页面。那么你能帮我如何让 htmlunit 在 Android 上运行吗?
    猜你喜欢
    • 1970-01-01
    • 2014-07-15
    • 2015-12-18
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 2022-12-19
    相关资源
    最近更新 更多