c# - C# 在抓取之前等待网页加载
问题描述
我正在尝试制作一个登录另一个 Web 应用程序的 Windows 窗体应用程序,导航几个步骤(单击)直到它到达特定页面,然后抓取一些信息(名称和地址)。
问题是我正在使用 DocumentCompletedEventHandler 以便在执行导航到下一页的代码之前加载页面(以便到达最终网页)。
当它触发时,DocumentCompletedEventHandler 会触发多次。
当我到达登录页面时,它会输入凭据,然后输入消息“页面已加载!” 多次出现。我按回车,它又出现了。然后它导航到下一页,在那个新页面上我遇到了同样的问题。
我怎样才能让 DocumentCompletedEventHandler 只触发一次而不是多次?
private void loadEvent(object sender, WebBrowserDocumentCompletedEventArgs e)
{
MessageBox.Show("Page loaded!");
}
private void loadLogin(object sender, WebBrowserDocumentCompletedEventArgs e)
{
var inputElements = webBrowser1.Document.GetElementsByTagName("input");
foreach (HtmlElement i in inputElements)
{
if (i.GetAttribute("name").Equals("utilizator"))
{
i.InnerText = textBox1.Text;
}
if (i.GetAttribute("name").Equals("parola"))
{
i.Focus();
i.InnerText = textBox2.Text;
}
}
var buttonElements = webBrowser1.Document.GetElementsByTagName("input");
foreach (HtmlElement b in buttonElements)
{
if (b.GetAttribute("name").Equals("Intra"))
{
b.InvokeMember("Click");
}
}
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(loadEvent);
var inputElements1 = webBrowser1.Document.GetElementsByTagName("input");
foreach (HtmlElement i1 in inputElements1)
{
if (i1.GetAttribute("id").Equals("headerqstext"))
{
i1.Focus();
i1.InnerText = textBox3.Text;
}
}
var buttonElements1 = webBrowser1.Document.GetElementsByTagName("button");
foreach (HtmlElement b1 in buttonElements1)
{
if (b1.GetAttribute("title").Equals("Caută"))
{
b1.InvokeMember("Click");
}
}
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(loadEvent);
}
private void Button1_Click(object sender, EventArgs e)
{
webBrowser1.Navigate("http://10.1.104.23/ecris_cdms/");
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(loadLogin);
}
}
}
解决方案
尝试这个 :)
Uri last = null;
private void CompleteResponse(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (!(last != null && last != e.Url))
return;
//your code here
}
推荐阅读
- c# - WPF Material Design 按钮悬停
- python - 计算Python中json列的特定字符
- javascript - ReactJS 在多个表之间拖放
- nginx - 当 CI 项目位于子目录中时,如何从 CI 项目 url 中删除 index、php 以在 nginx Hostwinds 服务器中创建干净的 url?
- excel - 在 Excel 中计算变量范围内的行数
- dll - 如何检测 CAD dwg/dxf 文件是 2D 还是 3D?
- jquery - 单击锚标记时如何在浏览器中隐藏href?
- python - 将变量值中的日期列添加到 Spark Dataframe
- flutter - 如何使用flutter进行ICMP ping
- spring-boot - 如何制作 RestTemplateBuilder 的副本?