小编Jo *_*Nsc的帖子

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

我是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() );
Run Code Online (Sandbox Code Playgroud)

所以,解释一下:我正在寻找一个价值为"Anzeigen"的按钮,模拟点击它,然后等到新页面被加载并进行我的计算.不幸的是,我的计算是在OLD HTML内容上完成的,因为它不等待页面加载.奇怪的是,如果我输入Thread.Sleep(5000); 在foreach循环之后,在模拟点击之前执行此睡眠,并且计算也失败.

我只需要点击一些同步行为,而不使用事件.

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

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

   webbrowserfinished = false;
   // do navigation here

   while (!webbrowserfinished)
   {
      Application.DoEvents();
      Thread.Sleep(100);
   }
   webbrowserfinished = false;
Run Code Online (Sandbox Code Playgroud)

c# browser synchronous winforms

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

browser ×1

c# ×1

synchronous ×1

winforms ×1