我是 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 循环之后,在模拟点击之前执行此睡眠,并且计算也失败。
我只需要该点击的一些同步行为,而不使用事件。
希望你能帮助我,对不起我的英语不好
编辑:像这样解决它:变量 bool webbbrowserfinished = false 在类内,如果我想要同步行为,我这样做:
webbrowserfinished = false;
// do navigation here
while (!webbrowserfinished)
{
Application.DoEvents();
Thread.Sleep(100);
}
webbrowserfinished = false;