UIBot
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
需要 XCUITest
和 XCUIApplication
来断言和触发屏幕上每个元素的交互。您通过在机器人初始化时传递一个 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文件。