Почему мой UIWebView пуст в моем модульном тесте? - PullRequest
3 голосов
/ 31 августа 2011

Я помещаю сгенерированный приложением контент в UIWebView и пытаюсь проверить, правильно ли я это делаю. Вот строка HTML, которую я помещаю в веб-представление:

@"<html><head></head><body><p>Come, let me clutch thee. I have thee not, and yet I see thee still. Art thou not, fatal vision, sensible to feeling as to sight?</p></body></html>"

И он попадает в веб-представление таким образом:

[self.webView loadHTMLString: [self HTMLStringForSnippet: model.body] baseURL: nil];

где model.body содержит только элемент <p/>, а -HTMLStringForSnippet: превращает его в правильно сформированный HTML. В моем тесте я полагаюсь на ответы на этот вопрос для извлечения HTML-содержимого тела с помощью JavaScript:

- (void)testCorrectHTMLLoadedInWebView {
    UIWebView *bodyView = controller.webView;
    NSString *bodyHTML = [bodyView stringByEvaluatingJavaScriptFromString: @"document.body.innerHTML"];
    STAssertEqualObjects(bodyHTML, model.body, @"Model body should be used for the web view content");
}

Хотя, просматривая код, я вижу, что UIWebView создан правильно и передан правильный HTML в -loadHTMLString:baseURL:, в тесте bodyHTML пусто. Итак, что мне нужно сделать, чтобы увидеть фактический контент, который я ожидал и ранее передал в веб-просмотр?

1 Ответ

5 голосов
/ 31 августа 2011

Для визуализации UIWebView требуется заметное время, поэтому проблема может заключаться в том, что вы получаете доступ к контенту до его полной загрузки.

Подключите метод UIWebViewDelegate webViewDidFinishLoad:, чтобы убедиться, что содержимое готово.

Обновление: возможно WebViewJavascriptBridge принесет некоторую помощь.

...