问题很简单:如何在UI测试中加载动画之后检查元素的存在?但没有使用静态超时。
例如:如果动画持续3秒ui测试等待3秒,如果动画持续10秒ui测试等待10秒,或者还有其他方法?
只要api调用持续很久,我就会尝试等待
发布于 2022-04-01 14:03:18
您可以通过两种方法中的一种来解决这个问题: 1)等待元素存在,或者2)等待动画消失。
为了等待元素的存在,您可以使用Apple的waitForExistence函数对目标元素进行长时间超时。这将返回一个布尔值,因此您可以直接在其上断言。
XCTAssertTrue(myElement.waitForExistence(timeout: 15.0)) // wait for 15 seconds maximum为了等待动画消失,您可以识别它,并使用以下函数扩展XCUIElement,我将广泛使用该函数,并将其绑定到XCToolbox Cocoapod中。然后,您将能够检查目标元素上的exists属性。
public func waitForDisappearance(timeout: TimeInterval = Waits.short.rawValue) -> Bool {
let expectation = XCTNSPredicateExpectation(predicate: NSPredicate(format: UIStatus.notExist.rawValue), object: self)
let result = XCTWaiter.wait(for: [expectation], timeout: timeout)
switch result {
case .completed:
return true
default:
return false
}
}此代码如下所示:
_ = animationElement.waitForDisappearance(timeout: 15.0)
XCTAssertTrue(myElement.exists)这两种解决方案都是错误的。第一个代码更少,而且可以说更简洁,第二个代码更明确,而且可能更易读。
https://stackoverflow.com/questions/71706310
复制相似问题