android - Appium 测试工具无法识别 ionic 应用程序中的元素 ID

标签 android cordova ionic2 appium hybrid-mobile-app

我们正在使用 Appium 测试工具对内置 ionic 的 android 应用程序进行自动化测试,但它无法识别与 DOM 元素关联的 ID 和类名:

enter image description here

但是当我们从 chrome:inspect 进行调试时,我们能够看到所有的 ID 和类。

enter image description here

最佳答案

Appium Desktop 应用程序显示应用程序的 native UI 元素的对象模型:这包括任何 Web View 中的 native UI 组件,例如 Cordova (Ionic) 应用程序。这是一个伪对象模型,旨在说明 native UI 元素的层次结构和属性。

但是,当您将 Chrome Devtools session 连接到应用的 Webview 时,这会向您显示 HTML Object Model (DOM) ,这不是一回事。这专门为 HTML 元素建模,因此具有特定于 HTML 的概念,例如 ID 和 CSS 类,它们确实转换为 Appium 显示的 native 对象模型。

如果您想使用 Appium 对基于 Cordova 的应用程序运行自动化测试,那么您应该使用 wdwd-bridge它提供了一种允许 Appium 直接与 Webview 通信的机制。 This blog post提供了有关如何使用 Protractor/Jasmine 设置此类测试环境的精彩教程。

然后您可以编写 Protractor 测试,允许您将您的应用程序 UI 元素引用为 HTML 组件,例如:

describe('Testing the app', function () {
  it('01. should have a header', function () {
    var header = element(by.id('header'));
    expect(header.getAttribute('class')).toContain('toolbar');
   });
});

关于android - Appium 测试工具无法识别 ionic 应用程序中的元素 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44672539/

相关文章:

sql - Cordova/Sqlite 外键

java - WebChromeClient 无法转换为 org.apache.cordova.CordovaChromeClient

angular - 如何在ionic 3中绑定(bind)<ion-segment>和<ion-slides>的事件?

javascript - 在 Ionic 的自定义按钮上实现 Css 和 Js 功能

安卓搜索栏风格

java - Android - 无法修复折叠工具栏布局中的工具栏

具有不同 subview 的 Android Listview

android - Retrofit2:如何从响应中保存 cookie

android - 使用 Cordova (Phonegap) 将 Xcode iPad 应用程序转换为 Android

css - 缩小 Ionic >=2 警报的媒体查询在 IOS 上不起作用