除了.exists函数之外,有没有办法检查XCTest中是否存在元素?

时间:2015-10-06 13:20:43

标签: ios swift xctest xcode7-beta6

目前,我正在使用XCTest iOS框架并使用.exists函数来检查元素的存在。想知道是否有任何其他方法来检查UI上元素的存在,因为.exists正在遇到问题。测试在第一次运行时获得成功,但是当它第二次运行时,它会失败,因为脚本单击UI上不存在的元素可能是因为第一次在应用程序中加载的元素仍然隐藏但存在。

请让我知道检查当前屏幕元素存在的任何功能。

2 个答案:

答案 0 :(得分:0)

我也在寻找一种等待元素出现而不是使用sleep方法的方法。有时UI元素需要更长时间才能加载,但这并不意味着它最终不会出现。此时,您可以检查使用.exists

有一个XCUIApplication类参考,不是由apple托管,而是在OBJ-C中: http://masilotti.com/xctest-documentation/index.html

更新:我想我找到了这个链接Delay/Wait in a test case of Xcode UI testing

的解决方案

使用NSPredicate课程为我工作。

    let welcomePage = app.staticTexts["Landing Page"]
    let existsPredicate = NSPredicate(format: "exists == 1")

    expectationForPredicate(existsPredicate, evaluatedWithObject: LandingPageLoad, handler: nil)
    waitForExpectationsWithTimeout(5, handler: nil)
  • 首先创建一个您正在等待的值或对象的常量
  • 使用NSPredicate类创建另一个常量来比较an的值 对象
  • 然后使用expectationForPredicate方法和vars
  • 最后给处理程序一个超时上限

答案 1 :(得分:0)

我引用这个答案,这个XCUIElementQuery函数可以处理未创建元素的情况:

 open func matching(identifier: String) -> XCUIElementQuery

REF: Testing if an element is visible with XCode 7 UITest