【问题标题】:XCUITest and UIActivityViewControllerXCUITest 和 UIActivityViewController
【发布时间】:2018-07-05 03:44:29
【问题描述】:

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

在显示工作表时查询XCUIApplication().sheets.count 将返回0

【问题讨论】:

    标签: ios uiactivityviewcontroller xcuitest


    【解决方案1】:

    在 xcode 12.2 和 iOS 14.2 上测试:

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

    可能的按钮索引号:

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

    【讨论】:

    • 这种方法我得到以下错误:Failed to synthesize event: Failed to scroll to visible (by AX action) Button, error: Error kAXErrorCannotComplete performing AXAction 2003 on element AX element pid: 3118, elementOrHash.elementID: 4354340448.106. (Underlying Error: Error kAXErrorCannotComplete performing AXAction 2003 on element AX element pid: 3118, elementOrHash.elementID: 4354340448.106)
    【解决方案2】:

    事实证明,当使用视图调试器时,可以通过 ActivityListView 的某种隐藏的可访问性标识符访问工作表(从 Xcode 9.2 开始)。可以通过以下方式访问它:

    XCUIApplication().otherElements["ActivityListView"]
    

    请注意,“取消”按钮是单独添加到窗口中的,因此它不是活动控制器的子项,必须使用

    XCUIApplication().buttons["Cancel"]
    

    【讨论】:

    • 这对于 iOS 13 有变化吗?在 iOS 13 模拟器上运行我的测试时,这不再起作用。
    • @andromedainiative 这仍然适用于 iOS 15.0。您可以通过在控制台中输入“po app”来检查标识符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多