首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在UI测试中加载动画后检查元素的存在?斯威夫特

如何在UI测试中加载动画后检查元素的存在?斯威夫特
EN

Stack Overflow用户
提问于 2022-04-01 11:37:43
回答 1查看 308关注 0票数 1

问题很简单:如何在UI测试中加载动画之后检查元素的存在?但没有使用静态超时。

例如:如果动画持续3秒ui测试等待3秒,如果动画持续10秒ui测试等待10秒,或者还有其他方法?

只要api调用持续很久,我就会尝试等待

EN

回答 1

Stack Overflow用户

发布于 2022-04-01 14:03:18

您可以通过两种方法中的一种来解决这个问题: 1)等待元素存在,或者2)等待动画消失。

为了等待元素的存在,您可以使用Apple的waitForExistence函数对目标元素进行长时间超时。这将返回一个布尔值,因此您可以直接在其上断言。

代码语言:javascript
复制
XCTAssertTrue(myElement.waitForExistence(timeout: 15.0)) // wait for 15 seconds maximum

为了等待动画消失,您可以识别它,并使用以下函数扩展XCUIElement,我将广泛使用该函数,并将其绑定到XCToolbox Cocoapod中。然后,您将能够检查目标元素上的exists属性。

代码语言:javascript
复制
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
    }
}

此代码如下所示:

代码语言:javascript
复制
_ = animationElement.waitForDisappearance(timeout: 15.0)
XCTAssertTrue(myElement.exists)

这两种解决方案都是错误的。第一个代码更少,而且可以说更简洁,第二个代码更明确,而且可能更易读。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71706310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档