WebView2 和/或 CoreWebView2 是否公开网站的框架?

问题描述

我可能正在看自动化网站时最常见的问题之一 -

如何等待 HTML 准备就绪?

这个问题在 Frames 中更加复杂。

我看到 Frame Navigation Complete 事件只公开了 CoreWebView2NavigationCompletedEventArgs,这实际上并没有给您太多帮助。一旦这个事件被触发,开发人员是否只需要将 JavaScript 注入到 Top Document 中来找出框架的状态,尤其是 DOM?从 CoreWebView2 事件中,您如何确定要使用 Javascript 进行检查的框架? API 当前是否公开了此框架的名称和/或 ID?

我相信 Frame 具有与浏览器相同的属性和事件,因此是否可以将框架作为 CoreWebView2 对象获取

解决方法

目前不直接支持此功能。您可以查看我们的 github project frames related feature requests 并在找到匹配的或打开新的时添加 +1。我们计划在未来添加框架对象,但最好记录下您的特定场景,以确保我们也能考虑到这一点。

作为一种解决方法,您可以检查 Chrome DevTools Protocol 是否有对您有帮助的 API。在 WebView2 中,您可以使用 CoreWebView2.CallDevToolsProtocolMethodAsync 调用 CDP 方法并使用 CoreWebView2.GetDevToolsProtocolEventReceiver 接收 CDP 事件。