Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 除了.exists函数外,是否有其他方法检查XCTest中是否存在元素?_Ios_Swift_Xctest_Xcode7 Beta6 - Fatal编程技术网

Ios 除了.exists函数外,是否有其他方法检查XCTest中是否存在元素?

Ios 除了.exists函数外,是否有其他方法检查XCTest中是否存在元素?,ios,swift,xctest,xcode7-beta6,Ios,Swift,Xctest,Xcode7 Beta6,目前,我正在XCTest iOS框架中工作,并使用.exists函数检查元素的存在。想知道是否有其他方法检查UI上元素的存在,因为存在问题。测试在第一次运行时会成功,但在第二次运行时会失败,因为脚本单击了UI上不存在的元素,这可能是因为第一次在应用程序中加载的元素仍然隐藏,但仍然存在 请让我知道任何检查当前屏幕元素存在的功能 我也在寻找一种等待元素出现的方法,而不是使用sleep方法。有时,UI元素的加载时间更长,但这并不意味着它最终不会出现。此时可以检查是否使用.exists 有一个XUIAp

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


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

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

有一个XUIApplication类引用,不是由apple托管的,而是在OBJ-C中:

更新:我想我从这个链接中找到了一个解决方案

使用NSPredicate类对我来说很有效

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

    expectationForPredicate(existsPredicate, evaluatedWithObject: LandingPageLoad, handler: nil)
    waitForExpectationsWithTimeout(5, handler: nil)
首先创建一个常数,它是您正在等待的值或对象的常数 使用NSPredicate类创建另一个常量以比较 对象 然后将expectationForPredicate方法与变量一起使用 最后给处理程序一个超时上限
我参考了这个答案,这个XUIElementQuery函数可以处理未创建元素的情况:

 open func matching(identifier: String) -> XCUIElementQuery
参考:

如果该元素不存在,您不应该检查它吗?听起来像是在更改您的资产的登录名。