Web浏览器等待按钮加载

时间:2019-01-13 20:29:47

标签: c# webbrowser-control

我有一个代码,可在网络浏览器页面中找到特定按钮,然后单击两次。问题在于,第一次单击按钮时,加载时间很短,然后再次变为可单击状态,因此,当第二次单击该按钮时,它仍在加载,因此无法正常工作。我基本上需要一种方法让程序等待按钮被加载之后再单击一次。 这是我的代码:

var links = webpage.Document.GetElementsByTagName("button");
            foreach (HtmlElement link in links)
            {
                if (link.GetAttribute("className") == "something")
                {
                    link.InvokeMember("click");
                }               
            }
            links = webpage.Document.GetElementsByTagName("button");
        foreach (HtmlElement link in links)
        {
            if (link.GetAttribute("className") == "something")
            {
                link.InvokeMember("click");
            }                
        }

我已经尝试使用Thread-Sleep(),但是它冻结了浏览器,并且按钮未加载。希望您能提供帮助。

1 个答案:

答案 0 :(得分:0)

尝试一下:

var links = webpage.Document.GetElementsByTagName("button");
foreach (HtmlElement link in links)
{
    if (link.GetAttribute("className") == "something")
    {
        link.InvokeMember("click");
    }               
}
links = webpage.Document.GetElementsByTagName("button");
foreach (HtmlElement link in links)
{

    if (link.GetAttribute("className") == "something")
    {
    while (!link.Enabled) 
        { 
            Application.DoEvents();
            Thread.Sleep(100); 
        }
        link.InvokeMember("click");
    }                
}