【问题标题】:Navigate to Url of Hybrid Native App in Appium with Protractor使用 Protractor 在 Appium 中导航到 Hybrid Native App 的 Url
【发布时间】: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


【解决方案1】:

有点晚了,但如果我正确理解了这个问题,你只需要区分在本地运行和通过 Sauce 运行。既然您已经有两个量角器文件,为什么不直接在 Sauce 配置中避免调用 browser.get 呢?还是有什么明显的我遗漏的东西?

【讨论】:

  • 是的,这基本上就是我所做的安德鲁。我认为这是一个小小的工作,因为在某些时候我会想写一个新的套件,一个从已知位置开始的测试。通常我认为这是通过将浏览器导航到“开始”来完成的——该特定套件将开始驱动站点的任何位置。对于移动应用程序,我无法设置“开始”页面。目前,我采用了一种约定,即登录测试首先出现,然后所有其他测试(假设是经过身份验证的用户)都必须在“主页”视图开始和结束。
  • 嗯...嗯,有baseUrl 属性和browser.getUrl('/') 应该引导你到开始。只要您继续使用相对路径,使用您的应用程序导航就不会有问题。
猜你喜欢
  • 2023-03-03
  • 2019-08-30
  • 1970-01-01
  • 2020-04-22
  • 2018-12-03
  • 2018-10-18
  • 1970-01-01
  • 1970-01-01
  • 2020-12-15
相关资源
最近更新 更多