我目前正在寻找自动测试Android应用的解决方案,原生Android应用以及混合Cordova / Phonegap应用。
来自Google的UI Automator看起来很不错,但无法处理WebViews,这使我无法使用它。 然后我找到了基于Selenium的有前途的自动化框架Appium,它也应该能够处理混合应用程序,但我无法使用WebViews,它似乎还没有完全实现,因为几个帖子证明了。
尝试Appium之后我发现了Selendroid的提示,这也应该适用于混合应用程序,但它看起来非常多,并且一直在崩溃整个计算机。
那么,有没有人知道使用WebViews测试Android应用程序的工作解决方案?我正在使用Windows 7.非常感谢您提供任何帮助。
答案 0 :(得分:6)
在第一种情况下,我们需要知道您喜欢哪种类型的测试。我想你想在UI上运行功能测试?这是我读完你的问题后我能想到的。
因此,让我们按照给定的环境进行拆分:
基于appium的Gappium使用json编写测试。当我得到正确的线程时,它就是目前用Web / iOS测试的。 Android / Win似乎暂时没有集成:</ p>
https://github.com/appium/io.appium.gappium.sampleapp
可以使用ripple和selenium来测试混合应用程序。请记住,一些本机函数/插件(混合应用程序上的本机函数......)无法测试或需要以未知方式进行模拟。这是当下的镜头。
答案 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将结果传回。
脚本启动包含
的模拟器
$ / opt / adt / sdk / tools / emulator-x86 -avd $ AVDNAME -qemu -m 2047&amp;
$ EMULATEPID = $!
$ adb wait-for-device #wait启动设备
$ adb shell输入keyevent 82 #unlock screen
使用qunit创建一个测试页面,完成后将通过AJAX调用传达测试结果。
另外值得注意的是:这种方法适用于Cordova的跨平台性质:应该可以采用相同的方法运行iOS,Windows Phone模拟器等(我也使用这种测试方法来对抗我们的NodeWebKit桌面版本代码)。
希望这有帮助,
-Mike