使用 flutter 嵌入部件测试 Android 和 iOS

问题描述 投票:0回答:2

测试以下场景的最佳方法是什么?

  1. 打开原生 Android 应用程序
  2. 转到用 flutter 编写的屏幕 B - 单击“确定”按钮
  3. 再次转到屏幕 C,这是纯 Android 视图

目前我使用Appium,但我找不到B屏幕的特定元素,因为按钮标签在检查器中并不总是可用。为了在测试中选择按钮,我必须指定 X 和 Y 坐标才能单击。我正在寻找一个强大的解决方案,涵盖 Android、iOS 和 flutter 的自动化集成 e2e 测试。使用 flutter 集成测试在独立模式下测试单独的 Flutter 部分。

android ios flutter testing e2e-testing
2个回答
1
投票

事实证明,Flutter 在大多数情况下都会构建一个在 Appium 中可见的

accessibility id
的应用程序。这个
accessibility id
源自 Widget 文本和其他 UI 元素。不幸的是我找不到任何
accessibility id
图标小部件。为了在 Appium 中找到这样的 Widget,你必须使用
Semantics
widget 将其包装在 flutter 中。

   Semantics(
          label: "EDIT_PROFILE",
          child: Icon(  

完成后,您可以轻松地在Appium中找到任何小部件。回答主要问题:Appium是测试Flutter只是Android应用程序中的嵌入式屏幕的场景的一个很好的解决方案。希望iOS上的测试也能顺利。


0
投票

只是一个附加信息,我从

new flutter project
开发了一个简单的 flutter 应用程序,并将
accessibility id
添加到两个小部件。

  • 已具有

    semanticsLabel
    的小部件示例:

          Text(
            '$_counter',
            semanticsLabel: 'counterText$_counter',
            style: Theme.of(context).textTheme.headlineMedium,
          ),
    
  • 没有

    semanticsLabel
    的小部件示例,因此我们需要用
    Semantics
    小部件包装它:

     floatingActionButton: Semantics(
       label: 'incrementButton',
       child: FloatingActionButton(
         onPressed: _incrementCounter,
         tooltip: 'Increment',
         child: const Icon(Icons.add),
       ),
     ),
    

然后使用适用于 Android 和 iOS 的 Appium 进行测试。 请参阅此链接获取代码

© www.soinside.com 2019 - 2024. All rights reserved.