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浏览器设置一次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,这样你的代码在两个事件中运行。