2011-03-15 2 views
14

Estoy haciendo un programa de automatización. Cargué una página web en mi formulario de Windows y lo cargo en el control WebBrowser. Luego, necesito hacer clic en un enlace desde WebBrowser programáticamente. ¿Cómo puedo hacer esto? por ejemplo:¿Cómo hacer clic en un elemento de enlace programmatialmente con HTMLElement?

  1. <a href="http://www.google.com">Google Me</a>

  2. <a href="http://www.facebook.com" id="fbLink">Facebook Me</a>

Los anteriores son 2 condiciones diferentes. El primer elemento no tiene un atributo id, mientras que el segundo sí lo tiene. ¿Alguna idea sobre cómo hacer clic en cada programa?

+0

¿qué quiere decir haciendo clic en Programmatically? –

+0

el programa hará clic automáticamente en el enlace. Hacer clic en programación significa que se hace clic en el programa, pero no se hace clic en – DEN

Respuesta

17

usted tiene que encontrar su primer elemento, por su ID u otros filtros:

HtmlElement fbLink = webBrowser.Document.GetElementByID("fbLink"); 

Y para simular un "clic":

fbLink.InvokeMember("click"); 

Un ejemplo para encontrar su enlace por el texto interno:

HtmlElement FindLink(string innerText) 
{ 
    foreach (HtmlElement link in webBrowser.Document.GetElementsByTagName("a")) 
    { 
     if (link.InnerText.Equals("Google Me")) 
     { 
      return link; 
     } 
    } 
} 
+0

No puedo implementar este código en el evento axwebbrowser. Intento depurarlo usando un punto de interrupción, pero descubrí se detendrá automáticamente en "foreach (enlace HtmlElement en webBrowser.Document.GetElementsByTagName (" a "))". ¿sabes lo que está pasando? – DEN

+0

mshtml.HTMLDocument htm = (mshtml.HTMLDocument) axWebBrowser1.Document; foreach (enlace HTMLElement en htm.getElementsByTagName ("a")) { si (link.InnerText.Equals ("búsqueda avanzada")) { MessageBox.Show ("sí !!"); } } – DEN

+0

Aún es una publicación muy antigua. Quiero saber por qué estoy recibiendo 'webBrowser.Document' como' null' siempre y cómo manejar el evento 'DocumentCompleted'. – Sandy

1

Necesita una forma de automatizar el navegador a continuación.

Una forma de hacer esto es usar Watin (https://sourceforge.net/projects/watin/). Le permite escribir un programa .Net que controla el navegador a través de un modelo de objeto conveniente. Se usa principalmente para escribir pruebas automatizadas para páginas web, pero también se puede usar para controlar el navegador.

Si no desea controlar el navegador de esta manera, entonces puede escribir un javascript que incluya en su página que haga clic, pero dudo que eso es lo que está buscando.

+0

thx para su respuesta, Runa. Sin embargo, estoy escribiendo la función de automatización usando axWebBrowser. pero me enfrento al problema de hacer clic en el enlace :( – DEN

+0

@DEN Si una tarea tan simple es un problema que es un argumento fuerte para usar una biblioteca en su lugar. – user3285954

+0

No estoy seguro si ese fue el dominio de Watin, pero ya no es así. Es ahora solo se encuentra en http://watin.sourceforge.net/index.html – paqogomez

Cuestiones relacionadas