XCUITest 和 UIActivityViewController

XCUITest and UIActivityViewController

如何在 XCUITest 中访问 UIActivityViewController(共享/操作 sheet)?根据 Accessibility Inspector,t 由多个 UICollectionView 组成,这使得 sheet 本身很难消除歧义。

在出现 sheet 时查询 XCUIApplication().sheets.count returns 0

事实证明,当使用视图调试器时,sheet 可以通过一个有点隐藏的 ActivityListView 可访问性标识符访问(从 Xcode 9.2 开始)。可以通过以下方式访问:

XCUIApplication().otherElements["ActivityListView"]

请注意,"Cancel" 按钮是单独添加到 window 的,因此它不是 activity 控制器的子项,必须使用

进行访问
XCUIApplication().buttons["Cancel"]

在 xcode 12.2 和 iOS 14.2 上测试:

XCUIApplication().otherElements.element(boundBy: 1).buttons.element(boundBy: <insert button index here>).tap()

可能的按钮索引号:

  • 0:取消
  • 1:复制
  • 2:标记
  • 3:打印
  • 4:保存到文件