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

3 html ocunit uiwebview ios

我正在将应用程序生成的内容放入其中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>"
Run Code Online (Sandbox Code Playgroud)

然后它进入Web视图:

[self.webView loadHTMLString: [self HTMLStringForSnippet: model.body] baseURL: nil];
Run Code Online (Sandbox Code Playgroud)

其中model.body只包含<p/>元素,并将其-HTMLStringForSnippet:包装到格式良好的HTML中.在我的测试中,我依靠这个问题的答案通过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");
}
Run Code Online (Sandbox Code Playgroud)

虽然我可以通过单步执行UIWebView正确创建的代码并传递正确的HTML -loadHTMLString:baseURL:,但在测试中bodyHTML是空的.那么我需要做些什么才能看到我期望并之前传递给Web视图的实际内容?

cSq*_*rel 5

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

Hook on UIWebViewDelegatewebViewDidFinishLoad:方法确保内容准备就绪.

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