community wpf winforms automation webbrowser-control

community - cefsharp wpf



WPF webbrowser control vs winforms (2)

La forma en que he hecho esto es ...

Descargue el texto HTML de la página que desea representar utilizando HTTPRequest. Inyecte el script java usando el paquete de agilidad HTML en el texto HTML. Si quieres usar jQuery, primero tienes que jQuerify tu página y luego vincular el evento con tus elementos dom. También puede llamar a su función c # desde dentro del script y de otra manera. No te metas con tipos dinámicos y por lo tanto no es una excepción.

También puede suprimir el error de script en su WC utilizando el método de extensión en este enlace .

Esto y esto pueden ayudar.

Estoy creando una aplicación wpf en la que estoy usando un control de navegador web. de todos modos, a veces estoy obligado a buscar elementos html, invocar clics y otras funciones básicas.

En el control del webbrowser de winforms, puedo lograr esto haciendo:

webBrowser1.Document.GetElementById("someId").SetAttribute("value", "I change the value");

En el control webbrowser de wpf logré lograr lo mismo haciendo:

dynamic d = webBrowser1.Document; var el = d.GetElementById("someId").SetAttribute("value", "I change the value");

También logré invocar un clic en el control webbrowser wpf utilizando el tipo dinámico. A veces tengo excepciones.

¿Cómo podré buscar elementos html, establecer atributos e invocar clics en un control webbrowser de wpf sin tener que usar tipos dinámicos en los que a menudo obtengo excepciones? Me gustaría reemplazar mi control webbrowser winforms en mi aplicación wpf por un control webbrowser wpf.


Utilice el siguiente espacio de nombres para que pueda acceder a todas las propiedades de los elementos y las propiedades de eventhandler:

using mshtml; private mshtml.HTMLDocumentEvents2_Event documentEvents; private mshtml.IHTMLDocument2 documentText;

en constructor o xaml configure su evento LoadComplete:

webBrowser.LoadCompleted += webBrowser_LoadCompleted;

luego, en ese método, cree su nuevo objeto de documento webbrowser y vea las propiedades disponibles y cree nuevos eventos de la siguiente manera:

private void webBrowser_LoadCompleted(object sender, NavigationEventArgs e) { documentText = (IHTMLDocument2)webBrowserChat.Document; //this will access the document properties as needed documentEvents = (HTMLDocumentEvents2_Event)webBrowserChat.Document; // this will access the events properties as needed documentEvents.onkeydown += webBrowserChat_MouseDown; documentEvents.oncontextmenu += webBrowserChat_ContextMenuOpening; } private void webBrowser_MouseDown(IHTMLEventObj pEvtObj) { pEvtObj.returnValue = false; // Stops key down pEvtObj.returnValue = true; // Return value as pressed to be true; } private bool webBrowserChat_ContextMenuOpening(IHTMLEventObj pEvtObj) { return false; // ContextMenu wont open // return true; ContextMenu will open // Here you can create your custom contextmenu or whatever you want }