使用XCUISiriService从XCTest控制Siri

苹果已经发布了带有新Swift 3.1快照的新Xcode 8.3 beta 2,可以从Apple开发者帐户下载。 Xcode 8.3 beta 2中有很多新功能,如果您拥有Apple开发人员帐户,则可以阅读发行说明。 在XCTest框架中添加了一个方便的类,以通过XCUI Test(即XCUISiriService)与Siri进行交互。 在这篇文章中,如何启用与Siri的交互。

Xcode 8.3 Beta 2

Xcode 8.3 beta 2中提供了新添加的类XCUISiriService,如果您具有Apple Developer Account,则当前可以下载该类。 您可以从开发者帐户的“下载”部分获得它。 Xcode 8.3需要macOS版本10.12及更高版本。 您可以下载大约4.​​52 GB的压缩XIP文件。 如果您已经具有以前版本的Xcode,请删除它或保留它,但是必须在Xcode DEVLOPER_DIR之间切换。 下载完成后,您可以解压缩文件以安装Xcode 8.3 beta,并等待Xcode和命令行工具的安装。 一旦使用所有命令行工具完全安装了Xcode 8.3 beta 2,我们可以将其拖到/ Applications路径中。 现在,我们必须通过运行以下命令来切换到新的Xcode版本

  $ sudo xcode-select —切换/Applications/Xcode-beta.app/ 

这将设置新的DEVELOPER_DIR,我们准备使用Xcode 8.3。 确保使用xcrun使用正确的工具链— find swift命令将显示您正在使用的当前工具链。

  $ xcrun —快速查找 
  /图书馆/开发人员/工具链/swift-3.1-DEVELOPMENT-SNAPSHOT-2017–01–22-a.xctoolchain/usr/bin/swift 

现在,请确保导出工具链并使用正确的Swift版本,此版本当前为Apple Swift版本3.1-dev。 您可以通过运行以下命令轻松地做到这一点。

  $ export TOOLCHAINS = swift 
  $ swift —版本 
  Apple Swift版本3.1-dev(LLVM 40fb70e1b6,Clang 658ce8b57d,Swift d6c7fe1067) 
 目标:x86_64-apple-macosx10.9 

这将确保您使用的是Swift 3.1。 现在,我们可以尝试XCTest Framework的新功能。

XCUISiriService

XCTest框架现在具有新的类XCUISiriService,该类具有“激活”方法,该方法将字符串(语音识别文本)传递给Siri。 然后,Siri将处理此字符串并返回结果。 siriService是XCDevices类的一部分,可以用作

  XCUIDevice.shared()。siriService.activate(voiceRecognitionText:“打开新闻”) 

让我们介绍如何通过创建带有很少测试的示例应用程序来使用XCUISiriService与Siri进行交互。

创建Xcode项目

让我们使用单元和UI测试模板将新的Xcode项目创建为iOS应用,并将其命名为XCUISiri。 现在,我们应该拥有带有模板UI测试代码的默认iOS应用。

从设备/模拟器启用Siri

现在,我们必须从模拟器或真实设备启用Siri。 让我们通过选择“硬件”菜单并选择Siri为模拟器启用它。 在模拟器中,我们可以从设置菜单启用Siri,如下所示。

运行测试

现在,我们都准备尝试新的XCUISiriService。 让我们再添加一个测试以使用XCUiSiriService。

  func testXCUISiriOpenExistingApp(){ 
  XCUIDevice.shared()。siriService.activate(voiceRecognitionText:“打开新闻”) 
  } 

我们很容易猜到上面的代码告诉Siri打开Apple“新闻”应用程序。 让我们按cmd + U运行测试

在这里观看此动作

您可以看到,测试已打开Siri应用程序并向其传递了“ Open News”字符串。 然后Siri对此采取行动,并打开了Apple News应用程序。 这样,我们可以从字面上将任何字符串传递给Siri并让Siri对其执行操作。

XCUISiriService的潜在好处。

在XCUI测试中,我们可以从XCUISiriService类中获得潜在的好处。 这里有一些可能性

  • 我们可以使用Siri打开一个应用程序(可能)吗?
  • 我们有能力使Siri可以实现的所有功能实现自动化,并且还有更多功能

Github源代码

  • 您可以自己从Github XCUISiriServiceDemo获取该存储库,并确保您具有Xcode 8.3 beta和最新的Swift工具链。
  $ git clone https://github.com/Shashikant86/XCUISiriServiceDemo/ 
  $ cd XCUISiriServiceDemo 
  $打开XCUISiri.xcodeproj 

现在,如果使用CMD + U运行测试,则应该看到测试正在运行。

结论

XCTest中的新类XCUISiriService公开了使用XCUI测试自动执行与人工智能(AI)相关的任务的功能。 希望一旦Xcode 8.3稳定版本发布,我们将获得更多的见解。

像XCBlog的 XCTEQ 发布的帖子一样 您可能还喜欢我们的一些服务,例如访客博客或Mobile DevOps(CI / CD)或测试自动化。 Github 搜索我们的 服务 ,开源项目, 或者在 Twitter Facebook Youtube LinkedIn 上关注我们 下载我们的 XCBlog iOS应用程序以离线阅读博客。

X CTEQ 一家专门从事基于Mobile DevOps,CI / CD,Mobile,AI / ML的测试自动化Checkout XCTEQ产品和服务的公司, 网址 http://www.xcteq.co.uk 或写信给我们info@xcteq.co。英国..