首页 > 解决方案 > UITest比较期望中元素的值

问题描述

我目前正在尝试确定活动指示器何时打开或关闭。我意识到,打开时,它value是1,关闭时是0。

我正在尝试检查value是 1 还是 0,如下所示:

let app = XCUIApplication()
let predicate = NSPredicate(format: "value == 0")
let expectation = expectation(
        for: predicate, 
        evaluatedWith: app.activityIndicators["activityId"],
        handler: nil)

if XCTWaiter().wait(for:[expectation], timeout: 20) == .completed {
    print ("Activity indicator is off")
} else {
    print ("Activity indicator is on")
}

当前的问题是总是达到超时。每当我在控制台设置断点if并在控制台中输入:

po app.activityIndicators["activityId"].value

结果是:

Optional<Any>
- some : 0

但是,在我让测试再次运行后,超时并采用 else 分支。

任何人都可以看到我在期望中访问时做错了value什么吗?element

提前感谢您的帮助。

标签: swiftxctestuitest

解决方案


假设您已经启动了您的应用程序并正确设置了活动指示器的可访问性标识符(您似乎已经完成了),您的代码不起作用的原因是它value是一个字符串,而不是一个整数

用以下内容替换您的谓词将使您的代码工作:

let predicate = NSPredicate(format: "value == \"0\"")

推荐阅读