Web浏览器提交按钮不调用第二次c#

本文关键字:调用 第二次 按钮 浏览器 提交 Web | 更新日期: 2023-09-27 18:14:51

我试图提交一个实用的webform上的button1点击。在第一次尝试ie从visual studio启动我的web浏览器后,它自动提交表单,但再次点击button1,网页加载,但提交按钮没有调用。在调试时,它显示执行了代码行,但没有发生任何操作。


private void button1_Click(object sender, EventArgs e)
        {
            webBrowser1.Navigate("xxxx");
            webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
        }
        void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            if (webBrowser1.Url.OriginalString.ToString() == "xxxx")
            {
                if(webBrowser1.ReadyState==WebBrowserReadyState.Complete)
                {
                    HtmlElementCollection doc = webBrowser1.Document.All;
                    foreach (HtmlElement ele in doc)
                    {
                        if (ele.GetAttribute("name").ToString()== "username")
                        {
                            ele.SetAttribute("value","xxxx");
                        }
                        if (ele.GetAttribute("name").ToString() == "password")
                        {
                            ele.SetAttribute("value", "xxxx");
                        }
                        if (ele.GetAttribute("classname") == "btn")
                        {
                            ele.InvokeMember("click");
                        }
                    }
                }
            }
            textBox1.Text = webBrowser1.DocumentText;
        }

Web浏览器提交按钮不调用第二次c#

您只需要为web浏览器设置一次DocumentCompleted事件。在你的代码中,每次按下按钮时,你都会不断添加事件链,这不是你想要的行为。

你想要的东西像(伪代码没有VS与我):

// When the form/parent loads bind the event ONCE here.
public void FormLoads()
{
    webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
}
// Just navigate here and the event will still be raised
private void button1_Click(object sender, EventArgs e)
{
    webBrowser1.Navigate("xxxx");   
}

这是由于你的webBrowser1_DocumentCompleted事件不工作,当你点击按钮。只需要创建一个方法Private Void Submit();,这里放你的代码,你想在点击事件中执行,并从两个位置调用这个方法一个是在button1_click和另一个webBrowser1_DocumentCompleted,这样你的代码在两个事件中运行。