Как проверить загружается Webview или нет без staticTexts в XCTest в Swift - PullRequest
0 голосов
/ 31 октября 2018

в первый раз я пытаюсь написать тестовый блок. Здесь я блокирую со следующим сценарием.

Когда я нажимаю кнопку, она переходит к следующему экрану и загружается веб-просмотр. Мне нужно ждать загрузки веб-просмотра.

Я пытался подождать, пока staticTexts будет виден нижеприведенным кодом,

let rewards = self.app.staticTexts[“Rewards”]
let exists = NSPredicate(format: “exists == 1”)
expectationForPredicate(exists, evaluatedWithObject: rewards, handler: nil)
waitForExpectationsWithTimeout(10, handler: nil)
XCTAssert(rewards.exists)
XCTAssert(app.staticTexts[“Rewards Overview”].exists)

Но в моем сценарии, когда я нажимаю кнопку, он переходит к следующему экрану, и веб-просмотр начинает загружаться. Но контент веб-просмотра всегда динамичен. Поэтому мне нужно подождать, пока webviewDidFinishLoad.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Я бы порекомендовал написать собственную функцию для ожидания, так как с waitForExistence(timeout:) вы можете только ждать существования, но он игнорирует другие состояния элемента (.isHittable, .isEnabled и т. Д.) Или просто ждать любого другого логического значения .

Плюс waitForExistence(timeout:) мучительно медленный, если у вас много тестов с большим количеством ожиданий (мы прекратили его использовать после того, как написали собственное ожидание). Это вызвано тем, что системный метод ожидает дополнительные 1-2 секунды, прежде чем вернуть true, если объект существует.

Это может помочь вам, но это не Swift, а ObjC: https://pspdfkit.com/blog/2016/running-ui-tests-with-ludicrous-speed/

0 голосов
/ 31 октября 2018

Вы можете использовать waitForExistence(timeout:) для возврата логического значения, если элемент вступает в существование в течение заданного времени ожидания - я бы рекомендовал использовать это для вашего варианта использования.

https://developer.apple.com/documentation/xctest/xcuielement/2879412-waitforexistence

...