如何在 ajax 更新后更新对象 WebBrowser

本文关键字:更新 WebBrowser 对象 ajax | 更新日期: 2023-09-27 18:30:23

我需要访问一个页面并保存此站点的两个页面。

但是当我尝试保存页面时,会保存同一页面的 2 次。

遵循代码

namespace sadfesrgshtydgf
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    private void Completado(WebBrowser b)
    {
        while (b.ReadyState != WebBrowserReadyState.Complete && b.Document.Body == null)
        {
            webBrowser1.Refresh();
            Application.DoEvents();
        }
    }
    int Pagina = 0;
    private void Form1_Load(object sender, EventArgs e)
    {
        webBrowser1.Navigate("http://voos.infraero.gov.br/voos/index.aspx");
        webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
        //Completado(webBrowser1);        
    }


    public string diretorio;
    public void interfaceUsuario()
    {
        diretorio = @"C:'Users'klima'Desktop";
        criarArquivo();
    }
    public void criarArquivo()
    {
        try
        {
            //var documente = webBrowser1.Document.Body.InnerHtml;
            var documente1 = webBrowser1.Document.GetElementById("grd_voos").OuterHtml;
            //Determino o diretorio onde será salvo o arquivo
            string nome_arquivo = diretorio + "''Infraero.txt";
            //verificamos se o arquivo existe, se não existir então criamos o arquivo
            //if (!File.Exists(nome_arquivo))
            File.Create(nome_arquivo).Close();
            // crio a variavel responsável por gravar os dados no arquivo txt
            arquivo = File.AppendText(nome_arquivo);

            //Escrevo no arquivo txt os dados contidos no textbox
            arquivo.Write(documente1);

            //Posiciono o ponteiro na próxima linha do arquivo.
            arquivo.Write("'r'n");
            //  MessageBox.Show("Dados salvos com sucesso!!!");

        }
        catch (Exception ex)
        {
            MessageBox.Show("Error: " + ex.Message);
        }
        finally
        {
            //Fecho o arquivo
            arquivo.Close();
        }
    }
    public void interfaceUsuario1()
    {
        diretorio = @"C:'Users'klima'Desktop";
        criarArquivo1();
    }

    public TextWriter arquivo;
    public void criarArquivo1()
    {
        try
        {

            var documentus = webBrowser1.Document.GetElementById("grd_voos").InnerHtml;
            //Determino o diretorio onde será salvo o arquivo
            string nome_arquivo = diretorio + "''Infraero1.txt";
            //verificamos se o arquivo existe, se não existir então criamos o arquivo
            // if (!File.Exists(nome_arquivo))
            File.Create(nome_arquivo).Close();
            // crio a variavel responsável por gravar os dados no arquivo txt
            arquivo = File.AppendText(nome_arquivo);

            //Escrevo no arquivo txt os dados contidos no textbox
            arquivo.Write(documentus);

            //Posiciono o ponteiro na próxima linha do arquivo.
            arquivo.Write("'r'n");
            //  MessageBox.Show("Dados salvos com sucesso!!!");

        }
        catch (Exception ex)
        {
            MessageBox.Show("Error: " + ex.Message);
        }
        finally
        {
            //Fecho o arquivo
            arquivo.Close();
        }
    }
    private void NavegarPagina0()
    {
        HtmlElement combo;
        combo = webBrowser1.Document.GetElementById("aero_companias_aeroportos");
        combo.SetAttribute("value", "SBKP");
        HtmlElement botao = webBrowser1.Document.GetElementById("btnPesquisar");
        botao.Document.GetElementById("btnPesquisar").Focus();
        botao.Document.GetElementById("btnPesquisar").InvokeMember("click");
        Pagina++;
    }
    private void NavegarPagina1()
    {

        HtmlElementCollection doc = webBrowser1.Document.GetElementsByTagName("table")[28].Children[0].Children[0].All;
        HtmlElement a = doc[2].Children[0];
        interfaceUsuario();
        a.InvokeMember("click");
        Completado(webBrowser1);
        Pagina++;


    }
    private void NavegarPagina2()
    {
        webBrowser1.Refresh();
        while(Convert.ToString( webBrowser1.Document.GetElementsByTagName("table")[28].Children[0].Children[0] ) != "1"){

        }
            MessageBox.Show("Nop while");

        Completado(webBrowser1);

        interfaceUsuario1();
        Close();

    }
    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {

        if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
        {
            //webBrowser1.DocumentCompleted -= webBrowser1_DocumentCompleted;
            Completado(webBrowser1);
            if (Pagina == 0 && webBrowser1.Document.GetElementById("btnPesquisar") != null)
                NavegarPagina0();
            else if (Pagina == 1 && webBrowser1.Document.GetElementsByTagName("table")[28] != null)
                NavegarPagina1();
            else if (Pagina == 2 && webBrowser1.Document.GetElementsByTagName("table")[28] != null)
                NavegarPagina2();
        }
    }
    private void webBrowser1_DocumentCompleted_1(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
    }

} }

如何在 ajax 更新后更新对象 WebBrowser

如果页面使用框架/iframe,则可以多次触发DocumentComplete。一个更可靠的方法是使用 DOM window.onload事件,这是如何完成的。

试试这个

  namespace sadfesrgshtydgf
    {
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Completado(WebBrowser b)
        {
            while (b.ReadyState != WebBrowserReadyState.Complete && b.Document.Body == null)
            {
                webBrowser1.Refresh();
                Application.DoEvents();
            }
        }
        int Pagina = 0;
        private void Form1_Load(object sender, EventArgs e)
        {
            webBrowser1.Navigate("http://voos.infraero.gov.br/voos/index.aspx");
            webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
            //Completado(webBrowser1);        
        }


        public string diretorio;
        public void interfaceUsuario()
        {
            diretorio = @"C:'Users'klima'Desktop";
            criarArquivo();
        }
        public void criarArquivo()
        {
           MessageBox.Show("Error: Por favor desligue o seu computador ");
            try
            {
                //var documente = webBrowser1.Document.Body.InnerHtml;
                var documente1 = webBrowser1.Document.GetElementById("grd_voos").OuterHtml;
                //Determino o diretorio onde será salvo o arquivo
                string nome_arquivo = diretorio + "''Infraero.txt";
                //verificamos se o arquivo existe, se não existir então criamos o arquivo
                //if (!File.Exists(nome_arquivo))
                File.Create(nome_arquivo).Close();
                // crio a variavel responsável por gravar os dados no arquivo txt
                arquivo = File.AppendText(nome_arquivo);

                //Escrevo no arquivo txt os dados contidos no textbox
                arquivo.Write(documente1);

                //Posiciono o ponteiro na próxima linha do arquivo.
                arquivo.Write("'r'n");
                //  MessageBox.Show("Dados salvos com sucesso!!!");

            }
            catch (Exception ex)
            {
                MessageBox.Show("Error: " + ex.Message);
            }
            finally
            {
                //Fecho o arquivo
                arquivo.Close();
            }
        }
        public void interfaceUsuario1()
        {
            diretorio = @"C:'Users'klima'Desktop";
            criarArquivo1();
        }

        public TextWriter arquivo;
        public void criarArquivo1()
        {
            try
            {

                var documentus = webBrowser1.Document.GetElementById("grd_voos").InnerHtml;
                //Determino o diretorio onde será salvo o arquivo
                string nome_arquivo = diretorio + "''Infraero1.txt";
                //verificamos se o arquivo existe, se não existir então criamos o arquivo
                // if (!File.Exists(nome_arquivo))
                File.Create(nome_arquivo).Close();
                // crio a variavel responsável por gravar os dados no arquivo txt
                arquivo = File.AppendText(nome_arquivo);

                //Escrevo no arquivo txt os dados contidos no textbox
                arquivo.Write(documentus);

                //Posiciono o ponteiro na próxima linha do arquivo.
                arquivo.Write("'r'n");
                //  MessageBox.Show("Dados salvos com sucesso!!!");

            }
            catch (Exception ex)
            {
                MessageBox.Show("Error: " + ex.Message);
            }
            finally
            {
                //Fecho o arquivo
                arquivo.Close();
            }
        }
        private void NavegarPagina0()
        {
            HtmlElement combo;
            combo = webBrowser1.Document.GetElementById("aero_companias_aeroportos");
            combo.SetAttribute("value", "SBKP");
            HtmlElement botao = webBrowser1.Document.GetElementById("btnPesquisar");
            botao.Document.GetElementById("btnPesquisar").Focus();
            botao.Document.GetElementById("btnPesquisar").InvokeMember("click");
            Pagina++;
        }
        private void NavegarPagina1()
        {

            HtmlElementCollection doc = webBrowser1.Document.GetElementsByTagName("table")[28].Children[0].Children[0].All;
            HtmlElement a = doc[2].Children[0];
            interfaceUsuario();
            a.InvokeMember("click");
            Completado(webBrowser1);
            Pagina++;


        }
        private void NavegarPagina2()
        {
            webBrowser1.Refresh();
            while(Convert.ToString( webBrowser1.Document.GetElementsByTagName("table")[28].Children[0].Children[0] ) != "1"){

            }
                MessageBox.Show("Nop while");

            Completado(webBrowser1);

            interfaceUsuario1();
            Close();

        }
        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {

            if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
            {
                //webBrowser1.DocumentCompleted -= webBrowser1_DocumentCompleted;
                Completado(webBrowser1);
                if (Pagina == 0 && webBrowser1.Document.GetElementById("btnPesquisar") != null)
                    NavegarPagina0();
                else if (Pagina == 1 && webBrowser1.Document.GetElementsByTagName("table")[28] != null)
                    NavegarPagina1();
                else if (Pagina == 2 && webBrowser1.Document.GetElementsByTagName("table")[28] != null)
                    NavegarPagina2();
            }
        }
        private void webBrowser1_DocumentCompleted_1(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
        }

    } }