UIBot 0.3.0

UIBot 0.3.0

Tulio Bazan 维护。



UIBot 0.3.0

  • 作者
  • TucoBZ

UIBot

CI Status Version License Platform

UIBot 帮助您轻松构建 UI Robot 框架以进行 UI 测试您的代码。

示例

要运行示例项目,首先克隆仓库,然后在示例目录中先运行 pod install

要求

  • Swift 5.0
  • iOS 9.0+

安装

UIBot 可通过 CocoaPods 获得;安装时,只需将以下行添加到 Podfile 文件中

pod 'UIBot', '~> 0.3.0'

注意:此 pod 仅在 UITest Target 需要。

基础

Robot Framework

Robot framework 描述了您可以一步步地与您的控制器进行交互,例如

- touch a button;
- write a text;
- wait a information;
- assert a text;
etc...

最终,您将为每个控制器拥有一个机器人,您需要描述如何与每个控制器进行交互。

UIBot 是做什么的?

UIBot 为您提供了许多便于使用的交互功能,如点击、滚动、断言、等待等。

要使用 UIBot 我需要什么?

首先,这仅在原生 UIKit 视图中有效,因为它使用原生谓词来定位您的视图以与它进行交互。此外,您还需要为您想要交互的组件添加 accessibilityIdentifier,以便在代码中轻松找到它们。

UIBot 概念

每个控制器都需要一个 Bot,也就是说,您可以通过将其子类化为 Bot 来创建一个表示您的控制器断言和交互的类。

每个 Bot 需要一个 trait,一个表示此控制器的 XCUIElement,当此元素在屏幕上时,您可以知道控制器已在屏幕上。

为此,一个 Bot 需要 XCUITestXCUIApplication 来断言和触发屏幕上每个元素的交互。您通过在机器人初始化时传递一个 Bottable 来实现它。当您初始化一个 Bot 时,它将检查屏幕上是否有 trait 元素,当元素被找到时,您可以从它触发断言和操作。

如您所见,您需要初始化一个 Bot 来确定在您的交互流程中何时打开此屏幕。最后,测试将看起来如下

Controller1Bot(test: Bottable)  //As Controller1 on screen
    .interaction1()             //trigger interation
    .assert()                   //do some assert
    .interaction2()             //trigger other interaction

Controller2Bot(test: Bottable)  //It opens the Controller2 
    .assert()                   //do some assert
    .interaction()              //trigger interation

Controller1Bot(test: Bottable)  //this goes back to the Controller1
...

查看示例测试以了解如何实现。

并且请记住,您需要将测试从正确的控制器开始作为setUp。

UIBot 交互

Bot 中可用的某些操作

  • 原生 Alert 断言和点击按钮;
  • 自定义文本、图片、按钮等断言...
  • 点击单元格、按钮、文本、坐标等...
  • 在文本字段中写入文本并在文本字段上断言文本
  • 自定义对元素的等待
  • 等等...

您可以在自己的 Bot 中创建自定义交互,这是一个好习惯,在每次断言或交互函数后,将 Self 返回为 @discardableResult,以创建前面展示的流程。

作者

TucoBZ,[email protected]

许可证

UIBot 按照MIT许可证提供。有关更多信息,请参阅LICENSE文件。