gpt4 book ai didi

swift - 无法在 viewController 之上的模态上断言具有相同元素的元素

转载 作者:行者123 更新时间:2023-11-30 10:33:41 36 4
gpt4 key购买 nike

有一个带有一些 HITTABLE 文本“exampleText”的 viewController。当您点击它时,会打开一个具有相同“exampleText”的模式(甚至2个具有相同静态文本“exampleText”的单元格)我的目的是通过 countHittableElements 计算那些“exampleTexts”

但问题是我的方法在模态和 viewController(位于该模态下)上进行元素搜索因此,如果模态上有 2 个“exampleTexts”并尝试使用 countHittableElements(name: "exampleTexts"),我总是会得到额外的 1 个元素,并且计数失败。

func countHittableElements(name: String) -> Int {
return filterHittableElements(name: name).count
}

func getElements(name: String) -> XCUIElementQuery {
let predicate = NSPredicate(format: "label CONTAINS[c] %@", name)
return application.cells.staticTexts.containing(predicate)
}

func filterHittableElements(name: String) -> [XCUIElement] {
let all = getElements(name: name).allElementsBoundByAccessibilityElement
let onlyfilt = all.filter { $0.isHittable }
return onlyfilt
}

当在上面打开模式时,有没有办法以某种方式忽略 viewController 内容?

最佳答案

如果您有权访问正在测试的应用程序的代码,则可以尝试对特定表中的这些元素进行计数,如下所示(树中的第一个表):

func getElements(name: String) -> XCUIElementQuery {
let predicate = NSPredicate(format: "label CONTAINS[c] %@", name)
return application.tables.element(boundBy: 0).cells.staticTexts.containing(predicate)
}

func getElements(name: String) -> XCUIElementQuery {
let predicate = NSPredicate(format: "label CONTAINS[c] %@", name)
return application.tables[<table identifier goes here>]cells.staticTexts.containing(predicate)
}

您可以通过在测试中的某个位置放置断点来检查 UI 树结构,然后在 XCode 控制台中键入:

po print(XCUIApplication().debugDescription)

关于swift - 无法在 viewController 之上的模态上断言具有相同元素的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58559633/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com