ExpectationForPredicate失败测试用例

维卡斯·唐吉(Vikas Thange)

最近开始使用SWIFT进行XCode UI测试。

我的问题是我需要等到某个元素出现在iPhone屏幕上。

我找到了一个带有'''expectationForPredicate'''和'''waitForExpectationsWithTimeout'''的解决方案,但问题是,如果预期谓词在超时时间内不匹配,则此方法旨在使测试用例失败。

我需要一个代码,如果元素未出现并且超出超时,则可以等待元素出现在屏幕上,那么我不希望测试用例失败。而是我想返回true(元素存在)/ false(不存在)

维卡斯·唐吉(Vikas Thange)

我通过避免上述函数找到了解决方案,因为这些函数在我的测试中失败,而不是返回true或false

下面是我创建的方法

func waitForElementToAppear(element: XCUIElement, file: String = #file, line: UInt = #line) -> Bool {
    let TIMEOUT: Double = 120 ;
    var isFound = false;
    let start = NSDate();
    var diff : Double = 0;
    repeat{
        print("Is element \(element) found : \(element.exists)")
        print("Printing debugDescription -> ")
        print(XCUIApplication().debugDescription)
        if(element.exists){
            isFound = true;
            break;
        }
        print("Waiting for element to exists... Time counter :\(diff)")
        sleep(1)
        let end = NSDate();
        diff =  end.timeIntervalSinceDate(start);
    }while(diff <= TIMEOUT);
    return isFound;
}

希望这对其他人有帮助,但是如果您还有其他更好的解决方案,请在此处回答。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章