XCUITest - 找不到匹配的元素

XCUITest - Failed to find matching element

在我的一个视图控制器中,我有如下代码:

class ViewController: UIViewController {
    @IBOutlet weak var _tableView: UITableView!

    private lazy var searchBar: UISearchBar = {
        let searchBar:UISearchBar = UISearchBar()
        searchBar.isAccessibilityElement = true
        searchBar.accessibilityLabel = "SearchField"
        searchBar.placeholder = "Search..."
        searchBar.sizeToFit()
        searchBar.isTranslucent = false
        searchBar.autocapitalizationType = .none
        searchBar.returnKeyType = .done
        searchBar.delegate = self

        return searchBar
    }()

    override func viewDidLoad() {
        super.viewDidLoad()

        isAccessibilityElement = true
        accessibilityLabel = "ViewController"

        _tableView.isAccessibilityElement = true
        _tableView.accessibilityLabel = "ItemList"
        _tableView.tableHeaderView = searchBar
    }
}

现在每当我尝试记录 UI 测试和 select searchBar 时,我都会收到以下错误:

Timestamped Event Matching Error: Failed to find matching element

我尝试调试以获取 searchBar 和以下代码,但它不匹配任何元素并且断言失败。

    let searchField = app.tables["ItemList"].otherElements.element(boundBy: 0).otherElements["SearchField"]
    XCTAssertTrue(searchField.exists)

你能告诉我我做错了什么吗?如何访问和测试 searchBar? 提前致谢。

  1. 内置录音机不好,还是自己写测试代码吧

  2. 在 VoiceOver 层次结构中查找具有 print(app.debugDescription)

  3. 的元素
  4. 您的 XCUIElementQuery 比应有的要长一点。尝试将其缩短为 app.otherElements["SearchField"]

您可以使用 Debug View Hierarchy 或 XCode 打开开发人员工具 Accessibility Inspector 从下到上查找未启用辅助功能的视图。