有没有人看过有关 WebView2 DevToolsProtocolHelper 的任何文档?在我问的另一个问题中(如何以编程方式将文件添加到从 Windows 窗体到网页的文件上传控件),建议我下载并使用 Microsoft.Web.WebView2.DevToolsProtocolExtensions。起初,它似乎使用起来非常简单,但不是那么多。
使用 c# 和 webview2 赢得表单应用程序
DevToolsProtocolHelper helper = webView21.CoreWebView2.GetDevToolsProtocolHelper()
Task<DOM.Node> t = helper.DOM.GetDocumentAsync();
Task<int> querySelectorResponse = helper.DOM.QuerySelectorAsync(t.Result.NodeId, "#fileupload");
_ = helper.DOM.SetFileInputFilesAsync(new string[] { filename }, querySelectorResponse.Result);
这 4 行代码应该获取文档并搜索节点 fileupload。我得到的只是错误,我还没有看到任何真实的例子或文档。
任何帮助将不胜感激。
**** 更新 *****
DevToolsProtocolHelper helper = webView21.CoreWebView2.GetDevToolsProtocolHelper();
DOM dom = helper.DOM;
DOM.Node t = await dom.GetDocumentAsync(-1,true);
int querySelectorResponse = await dom.QuerySelectorAsync(t.NodeId, "#fileupload");
_ = helper.DOM.SetFileInputFilesAsync(new string[] { filename }, t.NodeId);
这是我的代码的最新版本,看来我已经取得了进展。当我使用 CEFSHARP 时,我从 Document 和#fileUpload 返回的 ID 总是相同的,并且它在上传文件时起作用。
使用上面的代码,我得到了 ID,但它们总是不同的,我没有上传文件。
另一个更新,当我第二次运行此代码(通过按钮单击 winform)时,我确实获得了 int querySelectorResponse = await dom.QuerySelectorAsync(t.NodeId, "#fileupload") 行的正确 ID (504)的代码。同样,仍然没有将文件上传到页面。
再次,任何帮助将不胜感激