【发布时间】:2015-12-13 19:09:02
【问题描述】:
我们正在构建一个混合原生应用程序(Cordova/Phonegap/Angular/Ionic)。
我正在 Protractor 中编写端到端测试。当在本地运行时,它们针对由 Ionic 模拟器 (ionic serve) 服务的应用程序执行。这工作正常。
我还想在由 Sauce Labs (Appium) 托管的平台模拟器上针对“打包/构建”应用程序运行相同的测试。这几乎可以工作。
我现在遇到的麻烦是导航到应用程序。在本地运行时,在测试开始时,我将导航到 ionic 托管的应用程序:
browser.get('http://localhost:8100')
这显然不适用于运行混合原生应用的模拟器。我在测试启动时检查了浏览器的当前 URL,它是:
file:///android_asset/www/index.html#/login
这是有道理的并且是正确的。但如果我尝试:
browser.get('file:///android_asset/www/index.html#/login')
坏事发生了。
我正在寻找两种解决方案之一:
1) 了解如何导航到在模拟器中运行的混合原生应用的 Urls
或
2) 以某种方式让测试知道它在混合原生 cordova 容器中运行并跳过导航到起始页面(因为应用程序由 appium 自动加载)。
谢谢。
【问题讨论】:
-
如果您想使用
file://协议进行导航,请查看此 Q/A - Opening a file with protractor。还有一个Mobile Setup 的量角器指南,其中有很多关于使用 Appium 设置量角器的信息。要识别模拟器,您可以实现一个方法isCordova,它会检查用户代理或使用cordova-plugin-device 来判断当前环境是否是“移动”环境。 -
如果您尝试在两个完全不同的环境中运行相同的测试,也许值得拥有两个具有不同设置的 Protractor 配置。
-
感谢@MichaelRadionov。我已经在使用单独的量角器配置 - 当然需要为 Sauce / Appium 设置凭证和功能,而不是通过离子模拟器在本地提供服务。据我了解,移动设置旨在在“普通”移动浏览器(即:Chrome)中驱动应用程序,而不是测试混合原生应用程序。您指出我的链接看起来很有帮助。稍后我会看看他们是否有帮助。
标签: angularjs cordova ionic protractor appium