为什么我的UIWebView在我的单元测试中是空的?

时间:2011-08-31 10:13:01

标签: html ios uiwebview ocunit

我将应用生成的内容放入UIWebView,然后尝试测试我是否正确执行此操作。这是我在Web视图中添加的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中。在我的测试中,我依靠答案to this question通过JavaScript检索正文的HTML内容:

- (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来正确创建并在-loadHTMLString:baseURL:中传递正确的HTML,但在测试中bodyHTML为空。那么,我需要做些什么来查看我期望的以及之前传递给Web视图的实际内容?

1 个答案:

答案 0 :(得分:5)

UIWebView渲染需要一段时间,因此问题可能是您在内容完全加载之前访问内容。

挂钩UIWebViewDelegate的{​​{1}}方法以确保内容已准备就绪。

更新: 也许WebViewJavascriptBridge会带来一些帮助。