我正在使用 UIAutomation
为 iOS 应用程序编写集成测试。
作为测试套件的一部分,我集成了一个重置功能,只要点击左侧 UINavigationBar
项(只要该项存在),该功能就会将应用程序返回到主菜单。
这是用于执行此操作的代码(用tuneup.js编写):
function reset (app) {
// While we have a left button on the nav bar, tap it.
// This effectively resets our app
while(app.mainWindow().navigationBars()[0].leftButton().isValid()) {
app.mainWindow().navigationBars()[0].leftButton().tap();
}
}
它达到了它的目的。
但是,isValid()
会等待几秒钟,以防无法立即找到对象。因此,集成测试运行得非常慢,因为每次我们在重置后点击主菜单时,isValid()
都会等待一段时间,看看是否会出现左侧的 UINavigationBar 项目。
是否有替代函数或替代实现可以让我在没有强制超时的情况下确定元素是否存在?
最佳答案
您可以将默认超时覆盖为 0:
UIATarget.localTarget().pushTimeout(timeoutInSeconds);
但是,在 0 超时的 while 循环中检查验证似乎不是一个好主意。
function reset (app) {
// While we have a left button on the nav bar, tap it.
// This effectively resets our app
UIATarget.localTarget().pushTimeout(0);
if (app.mainWindow().navigationBars()[0].leftButton().isValid()) {
app.mainWindow().navigationBars()[0].leftButton().tap();
}
UIATarget.localTarget().popTimeout();
}
关于ios - UIAutomation isValid() 立即替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18682603/