Swift2 UITest - 等待元素出现而不处理测试因为失败的情况下元素不会出现

时间:2016-01-27 23:17:59

标签: swift swift2 xcode-ui-testing

我尝试在应用程序上创建UI测试,有时会出现AD弹出窗口,如果是,我需要单击关闭按钮。我试着用:

waitForExpectationsWithTimeout(timeout: NSTimeInterval, handler: XCWaitCompletionHandler?) 

let existsPredicate = NSPredicate(format: "exists == true")

但问题是该方法将测试视为失败,这对我的情况是不可接受的。

我尝试在自定义.exists之后使用sleep,但根据我的观察,即使元素确实出现在屏幕上,它也会始终返回false

同样使用.hittable进行格子化,即使元素没有出现在屏幕上,它似乎也是true

根据我的理解,如果Apple控制waitForExpectationsWithTimeout是否将测试视为失败,那将是很好的,但我无法找到任何东西。

非常感谢任何建议!

2 个答案:

答案 0 :(得分:0)

我建议你不要在这种情况下使用处理程序XCWaitCompletionHandler。

expectationForPredicate(predicate, evaluatedWithObject: evaluatedWithObject, handler: nil)
waitForExpectationsWithTimeout(TIMEOUT, handler: nil) 
if (evaluatedWithObject.exist) {
//dosmth
}

所以它是软判断smth出现。如果找不到元素,它只会等待时间并进一步

答案 1 :(得分:0)

不幸的是,我发现的唯一解决方案是手动执行:使用while循环并检查object.exists等待一段时间,以防止期望等待失败。