在Android上自动测试Cordova / Phonegap Webview

时间:2013-09-11 10:59:57

标签: android testing selenium cordova android-webview

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

来自Google的UI Automator看起来很不错,但无法处理WebViews,这使我无法使用它。 然后我找到了基于Selenium的有前途的自动化框架Appium,它也应该能够处理混合应用程序,但我无法使用WebViews,它似乎还没有完全实现,因为几个帖子证明了。

尝试Appium之后我发现了Selendroid的提示,这也应该适用于混合应用程序,但它看起来非常多,并且一直在崩溃整个计算机。

那么,有没有人知道使用WebViews测试Android应用程序的工作解决方案?我正在使用Windows 7.非常感谢您提供任何帮助。

3 个答案:

答案 0 :(得分:6)

在第一种情况下,我们需要知道您喜欢哪种类型的测试。我想你想在UI上运行功能测试?这是我读完你的问题后我能想到的。

因此,让我们按照给定的环境进行拆分:

原生iOS

原生Android

本地网络,如phonegap / cordova Apps

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

  • 我们在这里。没有atm。但是......这里有一个:

基于appium的Gappium使用json编写测试。当我得到正确的线程时,它就是目前用Web / iOS测试的。 Android / Win似乎暂时没有集成:<​​/ p>

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

关于phonegap&amp; amp;的注释apache cordova功能测试:

可以使用ripple和selenium来测试混合应用程序。请记住,一些本机函数/插件(混合应用程序上的本机函数......)无法测试或需要以未知方式进行模拟。这是当下的镜头。

enter image description here

也许对您有用的Continous Integration Server:

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

答案 1 :(得分:2)

通常,使用基于API的方法测试混合应用程序是一项相当大的挑战。它可以完成,但通常你需要将UI技术(例如WebView,Native,OpenGL,...)与几个API或某种包装器(如Selendroid)集成。

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

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

答案 2 :(得分:1)

我使用自己的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&amp;
    $ EMULATEPID = $!
    $ adb wait-for-device #wait启动设备 $ adb shell输入keyevent 82 #unlock screen

  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
  5. 另外值得注意的是:这种方法适用于Cordova的跨平台性质:应该可以采用相同的方法运行iOS,Windows Phone模拟器等(我也使用这种测试方法来对抗我们的NodeWebKit桌面版本代码)。

    希望这有帮助,

    -Mike