【问题标题】:Automatic Testing for Cordova/Phonegap Webview on AndroidAndroid 上 Cordova/Phonegap Webview 的自动测试
【发布时间】:2013-09-11 10:59:56
【问题描述】:

我目前正在寻找一种自动测试 Android 应用、原生 Android 应用以及混合 Cordova/Phonegap 应用的解决方案。

Google 的 UI Automator 看起来不错,但无法处理 WebView,这使我无法使用它。 然后我发现了很有前途的基于 Selenium 的自动化框架Appium,它应该也可以处理混合应用程序,但是我无法让它与 WebViews 一起使用,它似乎还没有完全实现,还有一些帖子证明。

在尝试 Appium 之后,我发现了 Selendroid 的提示,它也应该适用于混合应用程序,但它似乎有很多错误,并且一直在让我的整个计算机崩溃。

那么,这里有人知道使用 WebView 测试 Android 应用的有效解决方案吗?我正在使用 Windows 7。非常感谢您的任何帮助。

【问题讨论】:

  • 我的回答可以接受吗?

标签: android testing selenium cordova android-webview


【解决方案1】:

在第一种情况下,我们需要知道您喜欢进行什么样的测试。我认为您喜欢在 UI 上运行功能测试?这就是我在阅读你的问题后能想到的。

所以让我们根据给定的环境来拆分它:

原生 iOS

原生安卓

本地网络,如 phonegap/cordova 应用程序

native X - 适用于所有平台的开箱即用解决方案

  • 我们到了。没有自动取款机。但是.. 镜头就是这里的那个:

基于 appium 的 Gappium 使用 json 来编写测试。当我得到正确的线程时,此刻它是带有 Web/iOS 的 testet。 Android/Win 似乎暂时没有集成:

https://github.com/appium/io.appium.gappium.sampleapp

phonegap 和 apache cordova 功能测试注意事项:

可以使用ripple 和selenium 来测试混合应用程序。请记住,某些本机功能/插件(嘿嘿混合应用程序上的本机功能... =)无法测试或需要以未知方式模拟。这就是此刻的镜头。

可能对你有用的持续集成服务器:

https://github.com/linslin/PHPUnit-selenium-HTMLGallery

【讨论】:

  • 另外:seleniumhq.wordpress.com/2013/12/24/android-and-ios-support/…“我们将淘汰 Selenium 自己的 AndroidDriver 和 iPhoneDriver,转而支持 Selendroid、iosdriver 和 Appium。”
  • 谢谢,我们会尽快检查,最后我们会编辑帖子。干杯。我还将添加一个关于新 phonegap 平台“浏览器”的链接。
【解决方案2】:

一般来说,使用基于 API 的方法测试混合应用程序是一个相当大的挑战。可以这样做,但通常您需要将 UI 技术(例如 WebView、Native、OpenGL 等)与多个 API 或某种包装器(如 Selendroid)集成。

在 TestObject(我是联合创始人之一),我们创建了一种基于图像的 UI 测试方法,专门用于混合应用、应用之间的交互等案例。这种黑盒方法完全基于捕获屏幕 - 我们不在乎下面发生了什么。

请随意尝试 (http://testobject.com/) 与您的混合 Cordova/Phonegap 应用程序,让我知道与 UI Automator、Selendroid、Appium 相比它的效果如何。如果您遇到任何问题,请告诉我们。

【讨论】:

    【解决方案3】:

    我用我们自己的 Cordova 应用程序 (sourceforge.net/p/ustadmobil/codehtml5cordova/ci/master/tree/) 面临了这个挑战;我需要一种将其与 Jenkins CI 集成的方法。我们有 Cordova 特定的代码(例如文件系统访问),所以不能只使用 PhantomJS 和 Grunt。

    基本上我所做的就是在模拟器中以 index.html 作为测试页面启动应用程序,运行 http 服务器,然后让测试页面使用 AJAX 将结果传回。

    1. 脚本使用包启动模拟器
      $ /opt/adt/sdk/tools/emulator-x86 -avd $AVDNAME -qemu -m 2047 &
      $ EMULATEPID=$!
      $ adb wait-for-device #等待设备启动 $ adb shell input keyevent 82 #解锁屏幕

    2. 使用 qunit 创建一个测试页面,完成后将通过 AJAX 调用传达测试结果。

    3. 制作一个基本的 nodejs 服务器脚本,它将监听该 ajax 调用并将结果保存到一个文件中。然后 bash 脚本可以读取该文件并确定测试是通过还是失败:请参阅 http://sourceforge.net/p/ustadmobil/codehtml5cordova/ci/master/tree/setup/node-qunit-server/node-qunit-server.js
    4. 在构建脚本中等待结果文件的出现,然后终止模拟器和 NodeJS 服务器 - 参见 http://sourceforge.net/p/ustadmobil/codehtml5cordova/ci/master/tree/setup/android/unit-test-setup-android.sh

    另外值得注意的是:这种方法适用于 Cordova 的跨平台性质:应该可以采用相同的方法运行 iOS、Windows Phone 模拟器等(我也使用这种测试方法来测试我们的 NodeWebKit 桌面版本,它共享大部分代码)。

    希望对你有帮助,

    -迈克

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-02
      • 1970-01-01
      • 2014-09-01
      • 2015-12-29
      • 2013-08-06
      • 1970-01-01
      相关资源
      最近更新 更多