UITest比较期望中元素的值

UITest compare value of element in expectation

我目前正在尝试确定 activity 指示器何时打开或关闭。我意识到,打开时,它的 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分支

谁能看出我在访问期望中的 elementvalue 时做错了什么?

提前感谢您的帮助。

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

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

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