我尝试在应用程序上创建UI测试,有时会出现AD弹出窗口,如果是,我需要单击关闭按钮。我试着用:
waitForExpectationsWithTimeout(timeout: NSTimeInterval, handler: XCWaitCompletionHandler?)
与
let existsPredicate = NSPredicate(format: "exists == true")
但问题是该方法将测试视为失败,这对我的情况是不可接受的。
我尝试在自定义.exists
之后使用sleep
,但根据我的观察,即使元素确实出现在屏幕上,它也会始终返回false
。
同样使用.hittable
进行格子化,即使元素没有出现在屏幕上,它似乎也是true
。
根据我的理解,如果Apple控制waitForExpectationsWithTimeout
是否将测试视为失败,那将是很好的,但我无法找到任何东西。
非常感谢任何建议!
答案 0 :(得分:0)
我建议你不要在这种情况下使用处理程序XCWaitCompletionHandler。
expectationForPredicate(predicate, evaluatedWithObject: evaluatedWithObject, handler: nil)
waitForExpectationsWithTimeout(TIMEOUT, handler: nil)
if (evaluatedWithObject.exist) {
//dosmth
}
所以它是软判断smth出现。如果找不到元素,它只会等待时间并进一步
答案 1 :(得分:0)
不幸的是,我发现的唯一解决方案是手动执行:使用while循环并检查object.exists等待一段时间,以防止期望等待失败。