Cef Browser Wpf 探索 dom,查找元素并更改值

Posted

技术标签:

【中文标题】Cef Browser Wpf 探索 dom,查找元素并更改值【英文标题】:Cef Browser Wpf explore the dom, find elements and change values 【发布时间】:2015-06-21 21:58:51 【问题描述】:

还有一篇文章 (CefSharp load a page with browser login)。 我实现了IRequestHandler 接口和不同的方法,特别是GetAuthCredentials,我在其中显示了一个对话框并恢复用户和密码并将其传递给事件处理程序。 现在我想访问 dom,我得到几个 frameset 和不同的 frames,我对一个 frame 感兴趣,我知道 name 属性。 在这个frame 中,我需要获取不同类型的inputselect 等列表... 在我的应用程序中,我有一个按钮,用于设置不同 elements 的值,具体取决于它们是否出现在显示的页面上。 问题是我看不到任何获取documentframes 集合等的方法......

【问题讨论】:

【参考方案1】:

CefSharp 不会暴露底层的DOM,也不太可能看到http://magpcss.org/ceforum/viewtopic.php?f=6&t=10652&p=19533#p16750

最好的办法是使用EvaluateScriptAsyncjavascript Binding 的组合

https://github.com/cefsharp/CefSharp/wiki/Frequently-asked-questions#2-how-do-you-call-a-javascript-method-that-return-a-result https://github.com/cefsharp/CefSharp/wiki/Frequently-asked-questions#3-how-do-you-expose-a-net-class-to-javascript

如果您绝对必须拥有DOM 访问权限并且无法发明解决方案,那么CefGlue 可能是您更好的选择。 (我应该指出,DOM 只能在Render 进程中访问,因此需要通过IPC 将此类调用传递给Browser 进程,因此这不是一项简单的任务)。

【讨论】:

好的,我更了解浏览器的理念,它是……浏览器,但不一定是我需要的,也不一定是我希望在这样的组件中拥有的东西。我将尝试使用 Js 脚本。谢谢

以上是关于Cef Browser Wpf 探索 dom,查找元素并更改值的主要内容,如果未能解决你的问题,请参考以下文章

如何在CEF JS与browser进程间异步通信

C++ CEF 谷歌内核 和JS互交

CEF中访问修改HTML DOM元素

CEF中禁止弹出浏览器窗口

解决异步回调方法中,初始化Cef时WPF界面卡死的问题

Cef修改元素