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

Html 为什么我的UIWebView在单元测试中是空的?,html,ios,uiwebview,ocunit,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?<

我正在将应用程序生成的内容放入
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>"
其中
model.body
仅包含

元素,而
-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");
}

虽然我可以通过单步执行代码来查看
UIWebView
是否正确创建,并在
-loadHTMLString:baseURL:
中传递了正确的HTML,但在测试中
bodyHTML
是空的。那么,要查看我期望的和以前传递到web视图的实际内容,我必须做些什么呢?

呈现
UIWebView
需要相当长的时间,因此问题可能是您在内容完全加载之前访问了它

钩住
UIWebViewDelegate
webViewDidFinishLoad:
方法以确保内容准备就绪

更新:
可能会带来一些帮助。

UiWebView在调用webViewDidFinishLoad:时实际上还没有完成渲染,只是加载,所以很多内容或昂贵的内容可能仍然会导致问题。当加载完输入HTML后,会调用AFAIK
webViewDidFinishLoad:
。当然,这并不意味着所有图像/css文件/外部资源都已就绪,但问题是如何访问HTML内容。在unittest中等待webViewDidFinishLoad的正确方法是什么?它似乎不适用于简单的睡眠(10)。@nylund-while(!done&&[[nsrunlop currentlunloop]runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]);在webViewDidFinishLoad中设置完成。现在XctExpection可用,这就是应该使用的。我发现在本地使用nsrunlop可以很好地工作,但在将其推送到Xcode服务器时会间歇性失败。切换到XctExpection似乎解决了这个问题。
- (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");
}