Usar el evento DocumentCompleted con una página con múltiples marcos anidados no me funcionó.
que utiliza la biblioteca Interop.SHDocVW a emitir el control WebBrowser así:
public class webControlWrapper
{
private bool _complete;
private WebBrowser _webBrowserControl;
public webControlWrapper(WebBrowser webBrowserControl)
{
_webBrowserControl = webBrowserControl;
}
public void NavigateAndWaitForComplete(string url)
{
_complete = false;
_webBrowserControl.Navigate(url);
var webBrowser = (SHDocVw.WebBrowser) _webBrowserControl.ActiveXInstance;
if (webBrowser != null)
webBrowser.DocumentComplete += WebControl_DocumentComplete;
//Wait until page is complete
while (!_complete)
{
Application.DoEvents();
}
}
private void WebControl_DocumentComplete(object pDisp, ref object URL)
{
// Test if it's the main frame who called the event.
if (pDisp == _webBrowserControl.ActiveXInstance)
_complete = true;
}
Este código funciona para mí al navegar a una URL definida por el método de webBrowserControl.Navigate (url), pero don No sé cómo controlar la página completa cuando se hace clic en un botón html con htmlElement.InvokeMember ("clic").
¿Cómo está usando C#? ¿Es esta una pregunta de asp.net o estás usando el control del navegador web? – kibibu
@kibibu estoy usando el control WebBrowser. – Neir0
La comparación de AbsolutePath puede no funcionar si la página tiene muchos marcos. Lo intenté de esa manera antes, pero aún no lo he logrado. Todavía estoy atascado con este problema. :(:( –