gpt4 book ai didi

c# - WebBrowser 控件 - 提交表单后等待页面加载

转载 作者:行者123 更新时间:2023-11-30 15:02:27 25 4
gpt4 key购买 nike

我是 c# 及其概念的新手,所以如果这个问题有点愚蠢,我很抱歉。我尝试使用 winforms webbrowser 控件进行一些自动化操作

elements = webBrowser1.Document.GetElementsByTagName("input");
foreach (HtmlElement element in elements)
{
if (element.GetAttribute("value") == "Anzeigen")
element.InvokeMember("click");
}

while (webBrowser1.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents();

// do some math on recived html
// ......

// show results
MessageBox.Show(numPlanets.ToString() );

所以,解释一下:我正在寻找一个值为“Anzeigen”的按钮,模拟点击它,然后等待新页面加载,然后进行我的计算。不幸的是,我的计算是在旧的 HTML 内容上完成的,因为它没有等待页面加载。奇怪的是,如果我输入 Thread.Sleep(5000);在foreach循环之后,在模拟点击之前执行了这个Sleep,同样计算失败。

我只需要在不使用事件的情况下针对该点击采取一些同步行为。

希望你能帮助我,抱歉我的英语不好

编辑:像这样解决它:类中的变量 bool webbbrowserfinished = false,如果我想要同步行为,我会这样做:

   webbrowserfinished = false;
// do navigation here

while (!webbrowserfinished)
{
Application.DoEvents();
Thread.Sleep(100);
}
webbrowserfinished = false;

最佳答案

你可以试试WebBrowser.DocumentCompleted Event在 WebBrowser 控件完成加载文档时发生。

private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.Navigate("google.com");
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
}

void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
MessageBox.Show("Completed Now!");
}

关于c# - WebBrowser 控件 - 提交表单后等待页面加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12626544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com