XCUIElementQuery.matching(标识符:)不适用于UIImageView

时间:2017-10-26 08:56:27

标签: ios uiimageview swift4 xctestcase xcuitest

我正在尝试实施一个非常简单的测试,但我坚持使用XCUIElementQuery.matching(identifier:)方法。我认为查询UIImageView s没有按预期工作,但不确定原因。

我为视图设置了这两个设置:

  1. 标签:Label with Accessibility enabled with id: 'label'
  2. 的UIImageView:UIImageView with Accessibility enabled with id: 'accept'
  3. 我有这个测试:

    func testRecording() {
        XCTAssertEqual(app.staticTexts.matching(identifier: "label").count, 2)
        XCTAssertEqual(app.images.matching(identifier: "accept").count, 1)
    }
    

    我正在查询这两个视图(标识为label的标签和标识为accept的UIImageView)。从这里开始:app被简单地定义为类属性,如下所示:let app = XCUIApplication()

    所以,这就是屏幕的样子: Table with 2 items

    这意味着此测试应该通过,因为屏幕上有两个标识为staticText的{​​{1}}和一个标识为label的{​​{1}}。 image成功查询accept,但staticText尝试查询ID为matching(identifier:)的{​​{1}}时失败: Test failing on image with id 'accept'

    我尝试查询许多内容,例如:

    • image
    • accept
    • app.images.
    • app.tables.
    • app.tables.images.(在辅助功能设置的Traits部分中也标记为app.tables.cells.images.
    • app.buttons.(在辅助功能设置的Traits部分中也标记为Button

    但没有运气......我在这里做错了什么,或者遗漏了什么?

1 个答案:

答案 0 :(得分:0)

好的,因为我在QA团队中,所以我对开发代码并不了解。但是当我这样做时,我找到了答案。

用于显示复选标记的UIImageView永远不会从.xib文件中使用,而是总是分配一个新的实例,如下所示:

indicatorView = UIImageView(image: #imageLiteral(resourceName: "arrow_marked_ok_small"))

意味着使用初始化程序调用设置了新的辅助功能选项,以便覆盖在前两个映像中发布的.xib文件中具有辅助功能选项的旧UIImageView实例。