none
Invocar click en webBrowser RRS feed

  • Pregunta

  • Pues continuo avanzando, pero ahora no hace nada cuando invoco el click en un boton submint, este es mi codigo actual

    public void LoginBrowser()
            {
                web = new WebBrowser();
                web.Visible = true;
                web.DocumentCompleted += Web_DocumentCompleted;
                web.ScriptErrorsSuppressed = true;
                web.Navigate("https://test.com");
    
                Application.Run();
                
                web.Document.GetElementById("login").InnerText = "email@email.com";
                web.Document.GetElementById("password").InnerText = "123";
               
                foreach (HtmlElement htmlElement in web.Document.All)
                {
                    if (htmlElement.GetAttribute("value").Equals("login"))
                    {                    
                        htmlElement.InvokeMember("Click");
                    }
                }
    
                web.Dispose();
                
            }

    Tengo dos duudas.

    Como puedo validar que el InnerText esta modificando los valores y como puedo verificar que funciona el InvokeMember, todo lo estoy haciendo en una clase por lo cual no tengo el control en from.de antemano gracias por el tiempo

    Gracias

    lunes, 26 de octubre de 2015 15:37

Respuestas

  • hola

    es que no hay un nuevo DocumentCompleted sino que es el mismo si el objeto WebBrowser es la misma instancia

    ademas no entiendo porque usas el Application.ExitThread(); en el evento complete

    deberias usar

    privatevoidWeb_DocumentCompleted(object sender,WebBrowserDocumentCompletedEventArgs e){

    WebBrowser web = (WebBrowser)sender;

    web.Document.GetElementById("login").InnerText = "email@email.com"; web.Document.GetElementById("password").InnerText = "123";

    //resto codigo

    }

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 26 de octubre de 2015 16:26

Todas las respuestas

  • hola

    algo no entiendo de ese codigo, porque asignas el evento DocumentCompleted cuando no pones codigo alli ?

    o sea la seleccion de los text deberias realizarla cuando la pagina se termino de cargar

    lo mismo sucede cuando presionas el click, si esto causo una redireccion vuelve a navegar entonces el DocumentCompleted  se deberia volver a ejecutar

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 26 de octubre de 2015 15:57
  • El documentcompleted me llama  a

    private void Web_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {       
                    Application.ExitThread();
            }

    por eso la seleccion la hago despues de application.run();

    No entendi como que deberi de ejecutar de nuevo el DocumentCompleted, tendria que hacer algo asi?

      htmlElement.InvokeMember("submit");
                        web.DocumentCompleted += Web_DocumentCompleted;

    Gracias por la ayuda, saludos!!


    • Editado e. ramirez lunes, 26 de octubre de 2015 16:18
    lunes, 26 de octubre de 2015 16:17
  • hola

    es que no hay un nuevo DocumentCompleted sino que es el mismo si el objeto WebBrowser es la misma instancia

    ademas no entiendo porque usas el Application.ExitThread(); en el evento complete

    deberias usar

    privatevoidWeb_DocumentCompleted(object sender,WebBrowserDocumentCompletedEventArgs e){

    WebBrowser web = (WebBrowser)sender;

    web.Document.GetElementById("login").InnerText = "email@email.com"; web.Document.GetElementById("password").InnerText = "123";

    //resto codigo

    }

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 26 de octubre de 2015 16:26