我希望能够点击按钮而不是等待页面加载。 我搜索,但没有正确的解决方案。 这是代码的一部分:
el = webBrowser1.Document.GetElementById("LoginButton");
el.InvokeMember("click");
webBrowser1.Navigate(url);
我需要它是在点击之后,应用程序将加载页面,然后才转到另一个页面。
此外,webBrowser1.Navigate(url)
必须与click相同。因为它都在循环中。
请帮忙。
编辑。 * 更多代码 *(第一个代码是我需要的例子)
List<string> list1 = new List<string>();
bool flag = true;
while (flag)
{
flag = false;
foreach (HtmlElement he2 in webBrowser1.Document.GetElementsByTagName("a"))
{
if (he2.GetAttribute("href").Contains("profile.php?ID="))
{
list1.Add(he2.InnerText);
}
}
foreach (HtmlElement he in webBrowser1.Document.GetElementsByTagName("a"))
{
if (he.InnerHtml == "Next")
{
flag = true;
he.InvokeMember("click");
}
}
}
当我点击时,必须加载下一页,我必须在下一页上解析标签,但它会在下一页加载之前开始解析页面,所以它会解析同一页面。
答案 0 :(得分:1)
最后,我刚从我的按钮获得了href并使用了这段代码(而不是he.InvokeMember(“click”)) :
webBrowser1.Navigate(url_next);
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
Application.DoEvents();
工作正常。
答案 1 :(得分:0)
您可以使用DocumentCompleted
事件找出登录完成的时间。
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
el = webBrowser1.Document.GetElementById("LoginButton");
el.InvokeMember("click");
void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
Uri myUrl = new Uri("http://stackoverflow.com");
if (e.Url == myUrl)
{
WebBrowser1.Navigate(url);
}
}