【发布时间】:2014-06-27 16:47:52
【问题描述】:
在阅读了 Dianyang Wu article 和 this 的优秀帖子后,我设法构建了一个小型 .net 应用程序(几乎是 Wu 源代码的 C&P)来自动化测试(我们称之为 protoTestApp)。我的最终目标是打开十几个小窗口,并在每个小窗口中模拟不同的用户与 Web 应用交互以对其施加压力。
它在一定程度上可以工作,但是在我登录网络应用程序(我们称之为 InternalTestSubject)后,它会调用一个外部 url(我们称之为 ExternalTestSubject)并将其内容注入 iFrame。这个特定的外部 url 是另一个 web 应用程序,它会查找父窗口以获取一些参数。不能直接打开 ExternalTestSubject。
我的问题是在我的 protoTestApp 我还想与那个 ExternalTestSubject 交互(通过 id 找到一个按钮,单击它等)但是在我的 CompletedEvent 处理程序中,iFrame 仍然是空的。
WebBrowser 显示两个 Web 应用程序都已完全加载并正在运行,所以我想处理程序只是不等待 iFrame 内容加载,因为它是由 Ajax 异步调用完成的。
有什么建议可以完成吗?
【问题讨论】:
-
如何启动填充 iFrame 的操作?是不是一些 JavaScript 由 onload 事件触发,AJAX 调用一个注入响应到 iFrame 中?
-
InternalTestSubject 是一个 .net MVC web 应用程序。 iFrame 由捆绑的 index.js 在 ready 事件中动态生成,并附加到 index.cshtml 中声明的 div 中。 iFrame 指向 ExternalTestSubject URL。到目前为止,我的 WebBrowserDocumentCompletedEventHandler 被调用了两次(在第一次被登录页面调用之后)并且在这两个中我都可以看到空的 iFrame,我想处理程序没有等待 iFrame 文档加载
-
“我可以在视觉上看到空的 iFrame”,或者在尝试访问它的 windows 属性/DOM 时?我要解决的问题是我想知道您是否遇到与 iFrame 相关的同源策略限制。
-
我可以直观地看到 iFrame 已完全加载到浏览器中,但如果 iFrame 为空。没有限制,因为两个应用程序都托管在同一个域中(这是一个正在运行的解决方案)
标签: c# javascript ajax iframe webbrowser-control