gpt4 book ai didi

ios - 如何正确错误处理在 swift 中找不到的 XCUI 元素

转载 作者:可可西里 更新时间:2023-11-01 00:59:52 26 4
gpt4 key购买 nike

我正在尝试为使用 XCUI 测试的 iOS UI 测试快速编写一个 do-try-catch。我正在阅读错误处理部分:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ErrorHandling.html#//apple_ref/doc/uid/TP40014097-CH42-ID508但是我不确定当找不到元素时应该抛出哪个错误。

func tapElement(string:String) throws {

do{
waitFor(app.staticTexts[string], 5)
try app.staticTexts[string].tap()
}
catch {
NSLog("Element was not found: \(string)")
//how can i check specifically that the element was not found?
}


}

....

func waitFor(element:XCUIElement, seconds waitSeconds:Double) {
NSLog("Waiting for element: \(element)")
let exists = NSPredicate(format: "exists == 1")
expectationForPredicate(exists, evaluatedWithObject: element, handler: nil)
waitForExpectationsWithTimeout(waitSeconds, handler: nil)
}

非常感谢任何帮助!!

最佳答案

你应该使用 element.existselement.isHittable

element.exists 检查元素是否是 UIApplication/ScrollView/.. 的元素

element.isHittable 确定是否可以为元素计算命中点。

如果您不检查两者,element.tap() 会抛出以下错误,例如,如果元素位于键盘下:

Failed: Failed to scroll to visible (by AX action) TextField,...

示例代码:

let textField = elementsQuery.textFields.allElementsBoundByIndex[i]

if textField.exists && textField.isHittable {
textField.tap()
} else {
// text field is not hittable or doesn't exist!
XCTFail()
}

关于ios - 如何正确错误处理在 swift 中找不到的 XCUI 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36288529/

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