【发布时间】:2017-06-08 14:00:19
【问题描述】:
我希望能够打开网页、登录并能够在下一页上执行操作。 DoPlan 不会执行。到目前为止,这是我的代码......(我知道我有很多变量)
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
webBrowser1.Navigate("t");
}
private void DoPlans(object sender,
WebBrowserDocumentCompletedEventArgs e)
{
textBox1.AppendText("started");
webBrowser1.Document.GetElementById("t").InvokeMember("Click");
webBrowser1.Document.GetElementById("t").InvokeMember("Click");
foreach (HtmlElement elem in webBrowser1.Document.GetElementsByTagName("input"))
{
if (elem.GetAttribute("value") == "Submit Weekend Plans")
{
elem.InvokeMember("Click");
}
}
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
webBrowser1.Document.GetElementById("username").SetAttribute("value", "t");
webBrowser1.Document.GetElementById("password").SetAttribute("value", "t");
foreach (HtmlElement elem in webBrowser1.Document.GetElementsByTagName("input"))
{
if (elem.GetAttribute("value") == "Login")
{
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(DoPlans);
elem.InvokeMember("Click");
}
}
}
}
【问题讨论】:
-
您正在订阅事件自己的事件处理程序中的事件。似乎是正确的方法。
-
我看到您正在搜索一个元素并点击它。但是您订阅了错误的事件。如果单击确实有效,则网络浏览器将导航到另一个页面。在这里,同一个事件处理程序应该第二次触发。您只需要区分不同的页面。您可以尝试使用
e.Url。
标签: c# winforms webbrowser-control