23 Ağustos 2018 Perşembe

c# webbrowser

webBrowser1.Document.GetElementById("navbar_username").InnerText ="Tester"; webBrowser1.Document.GetElementById("navbar_password").InnerText = "xxxxxxxxxxx"; foreach (HtmlElement HtmlElement1 in webBrowser1.Document.Body.All) { if (HtmlElement1.GetAttribute("value") == "Log in") { HtmlElement1.InvokeMember("click"); break; } }

public Form1()
        {
            InitializeComponent();
            webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
        }

        private void AddText_Click(object sender, EventArgs e)
        {
            webBrowser1.Url = new Uri(@"http://google.com");
        }

        void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            foreach (HtmlElement he in webBrowser1.Document.All.GetElementsByName("q"))
            {
                he.SetAttribute("value", "HI");
            }
        }


---------
wb.Navigate(url);
while(wb.ReadyState != WebBrowserReadyState.Complete)
{
   Application.DoEvents();
}
MessageBox.Show("ok this waits Complete");

//navigates to new page
wb.Document.GetElementById("formId").InvokeMember("submit");
while(wb.ReadyState != WebBrowserReadyState.Complete)
{
   Application.DoEvents();
}
MessageBox.Show("webBrowser havent navigated  yet. it gave me previous page's html.");  
var html = wb.Document.GetElementsByTagName("HTML")[0].OuterHtml;
how to fix this unwanted situation;
 button1_click(){
        wb.Navigate("site1.com");
        waitWebBrowserToComplete(wb);

        wb.Document.GetElementById("input1").SetAttribute("Value", "hello");
        //submit does navigation
        wb.Document.GetElementById("formid").InvokeMember("submit");
        waitWebBrowserToComplete(wb);
        // this actually waits for document Compelete. worked for me.

        var processedHtml = wb.Document.GetElementsByTagName("HTML")[0].OuterHtml;
        var rawHtml = wb.DocumentText;
 }


 //instead of checking  readState . we get state from DocumentCompleted Event via bool value
 bool webbrowserDocumentCompleted = false;
 public static void waitWebBrowserToComplete(WebBrowser wb)
 {
     while (!webbrowserDocumentCompleted )
     {
         Application.DoEvents();
     }
     webbrowserDocumentCompleted = false;
  }

  form_load(){
     wb.DocumentCompleted += (o, e) => {
        webbrowserDocumentCompleted = true;
      };
  }

--------

Hiç yorum yok:

Yorum Gönder