【发布时间】:2021-09-03 09:35:52
【问题描述】:
有人看过有关 WebView2 DevToolsProtocolHelper 的任何文档吗? 在我问的另一个问题 (How do I programmatically add a file to a fileupload control from a windows form to a webpage) 中,有人建议我下载并使用 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 ") 代码行。同样,仍然没有将文件上传到页面。
再次感谢任何帮助
【问题讨论】:
标签: c# winforms webview2 chrome-devtools-protocol