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:保存到文件
如何在 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:保存到文件