0

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

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

4

2 回答 2

0

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

 open func matching(identifier: String) -> XCUIElementQuery

ref: 使用 XCode 7 UITest 测试元素是否可见

于 2017-01-12T16:30:03.147 回答
0

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

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

更新:我想我在 Xcode UI 测试的测试用例中找到了这个链接延迟/等待的解决方案

使用 NSPredicate 类对我有用。

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

    expectationForPredicate(existsPredicate, evaluatedWithObject: LandingPageLoad, handler: nil)
    waitForExpectationsWithTimeout(5, handler: nil)
  • 首先创建一个您正在等待的值或对象的常量
  • 使用 NSPredicate 类创建另一个常量来比较对象的值
  • 然后将 expectForPredicate 方法与 vars 一起使用
  • 最后给处理程序一个超时上限
于 2015-11-10T18:52:49.373 回答