UITest比较期望中元素的值

时间:2018-10-09 10:48:22

标签: swift xctest 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的{​​{1}}时,有人能看到我在做什么吗?

谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

假设您同时启动了应用设置了活动指标的可访问性标识符(看来您已经完成),则代码没有这样做的原因value是一个字符串,而不是整数,这是行不通的。

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

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