Веб-браузер дождитесь загрузки кнопки - PullRequest
0 голосов
/ 13 января 2019

У меня есть код, который находит определенную кнопку на странице веб-браузера и щелкает ее два раза. Проблема заключается в том, что при первом нажатии кнопки происходит короткая загрузка, после чего она снова становится активной, поэтому при повторном нажатии она не работает, поскольку все еще загружается. Мне в основном нужен способ сказать программе, чтобы она ждала, пока кнопка не была загружена, а затем щелкнуть ее снова. Вот мой код:

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 голосов
/ 14 января 2019

Попробуйте это:

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");
    }                
}
...