I'm looking for help writing a method which waits until the specified element is not present on a page anymore. I am developing with Swift 2.2 and XCTest. As you can see, I'm a new here and new to programming. Your help will be greatly appreciated.
You will have to setup predicate for the condition you want to test:
let doesNotExistPredicate = NSPredicate(format: "exists == FALSE")
Then create an expectation for your predicate and UI element in your test case:
self.expectationForPredicate(doesNotExistPredicate, evaluatedWithObject: element, handler: nil)
Then wait for your expectation (specifying a timeout after which the test will fail if the expectation is not met, here I use 5 seconds):
self.waitForExpectationsWithTimeout(5.0, handler: nil)
I wrote a super simple waitForNonExistence(timeout:)
extension function on XCUIElement
for this which mirrors the existing XCUIElement.waitForExistence(timeout:) function, as follows:
extension XCUIElement {
/**
* Waits the specified amount of time for the element’s `exists` property to become `false`.
*
* - Parameter timeout: The amount of time to wait.
* - Returns: `false` if the timeout expires without the element coming out of existence.
*/
func waitForNonExistence(timeout: TimeInterval) -> Bool {
let timeStart = Date().timeIntervalSince1970
while (Date().timeIntervalSince1970 <= (timeStart + timeout)) {
if !exists { return true }
}
return false
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With